1.1 知识点

  1. 函数:就是可以重复执行的代码块
  2. 2.  组成:参数,功能,返回值
  3. 为什么要用函数,因为一部分代码使用次数会很多,所以封装起来, 需要的时候调用
  4. 函数不调用,自己不会执行
  5. 同名函数会覆盖,后面的覆盖前面的
  6. 函数名等于整个函数,打印函数名,就等于打印整个函数的代码
  7. 7.  加载函数的时候只加载函数名,不加载函数体
  8. 参数相当于局部变量
  9. 两个平级的函数中变量不会相互影响
  10. 10.     预解析:函数在解释文档的时候会被整体提到文档的最前面,和加载不一样
    1. 第一种:解析的时候会被提前,可在任何地方使用和定义

1.2 函数的定义

  1. 第一种:解析的时候会被提前,可在任何地方使用和定义

1. function fun ( a , b ) { 函数体;return ;  }

  1. 第二种:函数不会被提前,使用必须在定义之后

2. var fn2 = function ( ){函数体;}

3. //函数名可有可无,无名叫匿名函数

  1. 第三种:函数不会被提前,使用必须在定义之后,如果函数体不加引号,不调用也会执行

1. var fn3 = new Function(“函数体;”);

1.3 函数的参数

  • 设置参数可解决修改值不修改规则这个问题。
  • 增强函数的功能性,和程序员的交互性,和函数的可拓展性
  • JS没有方法重载
  • 规则中有几个变化的数(操作数),就定义几个参数
  • 函数可嵌套
  • 开闭原则
  • Math.sqrt( ); 开平方

形参

  1. 形式上参与运算的值,作用是为实参占位置
  2. 实际上参与运算的值
  3. 实参要进行运算,必须要有形参占位置
  4. 相等,正常执行
  5. 实参个数大于形参,正常执行,多去的舍弃不用
  6. 形参大于实参,看程序是否出错

实参

形参的个数和实参的个数不一样

a)  计算会得到NaN

b)  实参值是undefined  为给定实参的形参是undefined

c)  任何值和undefined计算都的NaN

1.4返回值

  1. 执行函数完毕之后,返回的数据
  2. 函数程序运行后的结果外边需要使用的时候,我们不能直接给予,需要通过return返回
  3. 作用:函数执行完成以后,结果就是返回值
  4. 有return的函数就有返回值,反之则没有
  5. 把函数内部的值赋值给外部
  6. 6.  如果没有return或者只有return没有值函数默认返回undefined
  7. 函数执行完return后会立即结束,return后面的代码不会执行
  8. 函数的返回值必须要执行才可以得到
  9. 外部要用那个值,我们就返回哪个值
  10. return可以截断循环
  11. Math.round()四舍五入
  12. Math.pow( a , n); a的n次幂
  13. Math.floor();地板函数
  14. var s  =  Math.floor( Math.randow() * (max-min+1) + min ); //生成min-max之间的随机数
  15. 函数内用的必须是形参的数组
  16. bubble  冒泡
  17. 冒泡排序极限后会出现问题
     var arr = [4,435,234,1223,645,341,123,124,562];
function bubble(arr) {
for(var i=0;i<arr.length-1;i++){
var flag = true;
for(var j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag = false;
}
}
if(flag){
break;
// 此处若直接使用return(arr) ,则不能返回正确的值,个人理解为,此处为局部变量,不能正确返回
}
}
return(arr);
}
// console.log(bubble(arr))

18.函数通过运算来的数一般都是半成品,需要二次加工

1.5 函数名、函数体和函数加载问题

  1. 打印函数名,等于打印了整个函数的代码
  2. 打印执行函数,等于打印函数的返回值

a)  函数包函数先执行内部函数

  3. JS加载的时候,只加载函数名,不加载函数体

1.6 变量作用域

局部变量

  1. 只有局部能够访问的变量
  2. 函数内部用var定义的变量
  3. 函数执行完毕后,局部变量被回收

全局变量(成员变量)

  1. 在哪里都可以访问的变量
  2. 在函数内部,直接定义变量,不加var为全局变量,函数必须得执行后才可以使用

1.7 隐式全局变量(不要不这样写)

  1. 一般存在函数之中

a)  var a = b = c = 1; //这种情况,b和c都是隐式全局变量

b)  var a = 1; b = 2; c = 1; //这种情况,b和c都是隐式全集变量,分号相当于换行

c)  var a = 1, b = 2,  c = 1; //这种情况,b和c不是隐式全局变量

1.8 预解析:JS解析器

  1. 查看语法错误
  2. 变量声明提升(只提升变量名,不提升变量值),
  3. 把内容加载到内存中

a)  对象加载到堆中

b)  简单类型加载到栈中

  1. 用function定义的函数整体提升

a)  函数内照样适用

b)  就近原则,

  5.  预解析(整体提升函数)和函数加载(只加载函数名)的区别

  6.  预解析:检查script标签内的语法,提升函数声明

  7.  函数加载:把函数加载到内存中

  8.  解析完再加载

      // 测试是否是质数
1 function isPrime(n){
for(i=2;i<n/2;i++){
if (n%i == 0 ){
return false;
}
}
return true;
}
confirm (isPrime(7));
斐波那契数列
         function fibonacci(n){
if (n<3){
n=1;
return n;
}else {
var k = 1, j = 1;
for (i = 3; i <= n; i++) {
j = j + k;
k = j - k;
}
return j;
}
}

获取输入年月日,确定是今年的第几天

    console.log(getDay(2016,3,1));
function getDay(year,month,day){
var arr = [31,28,31,30,31,30,31,31,30,31,30,31];
var sum = day;
if(year%4==0 && year%100!==0 || year%400==0){
arr[1]=29;
}
for(var i=0;i<month-1;i++){
sum += arr[i];
}
return sum ;
}

javascript . 03 函数定义、函数参数(形参、实参)、函数的返回值、冒泡函数、函数的加载、局部变量与全局变量、隐式全局变量、JS预解析、是否是质数、斐波那契数列的更多相关文章

  1. JS:递归基础及范例——斐波那契数列 、 杨辉三角

    定义:程序调用自身的编程技巧称为递归.一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就 ...

  2. js算法集合(二) javascript实现斐波那契数列 (兔子数列)

    js算法集合(二)  斐波那契数列 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列进行研究,来加深对循环的理解.     Javascript实 ...

  3. Stream流实现斐波那契数列

    1.前言 我们都知道斐波那契数列有很多种实现方法,在jdk1.8以前没有流操作,只能通过递归或者迭代等其他方式来实现斐波那契数列, 但是jdk1.8以后,有了流操作,我们就可以使用流来实现斐波那契数列 ...

  4. Python进阶(七)----带参数的装饰器,多个装饰器修饰同一个函数和递归简单案例(斐波那契数列)

    Python进阶(七)----带参数的装饰器,多个装饰器修饰同一个函数和递归简单案例(斐波那契数列) 一丶带参数的装饰器 def wrapper_out(pt): def wrapper(func): ...

  5. JS高级. 06 缓存、分析解决递归斐波那契数列、jQuery缓存、沙箱、函数的四种调用方式、call和apply修改函数调用方法

    缓存 cache 作用就是将一些常用的数据存储起来 提升性能 cdn //-----------------分析解决递归斐波那契数列<script> //定义一个缓存数组,存储已经计算出来 ...

  6. HDU4549 M斐波那契数列 矩阵快速幂+欧拉函数+欧拉定理

    M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Sub ...

  7. Javascript数组求和的方法总结 以及由斐波那契数列得到的启发

    一次面试中,面试官要求用三种不同的Javascript方法进行一个数字数组的求和,当时思来想去只想到了使用循环这一种笨方法,因此面试比较失败,在这里总结了六种Javascript进行数组求和的方法,以 ...

  8. JavaScript生成斐波那契数列

    常规写法 https://cn.bing.com/search?q=js+fibonacci+sequence&pc=MOZI&form=MOZSBR //Fibonacci func ...

  9. 太原面经分享:如何用js实现返回斐波那契数列的第n个值的函数

    面试攒经验,let's go! 值此高考来临之际,闲不住的我又双叒叕出发去面试攒经验了,去了公司交待一番流程后,面试官甩给了我一张A4纸,上面写着一道js算法笔试题(一开始我并不知道这是在考察js算法 ...

随机推荐

  1. svg学习之旅(2)

    基本图形 circle 圆     cx基于X轴的坐标位置 cy基于y轴的坐标位置 r圆的半径 fill 填充 transparent透明 stroke 边框 stroke-width 边框宽度 st ...

  2. jQuery动态生成不规则表格前后端

    一.需求:有这么一张表 前四个属性当作联合主键 需要把该表所有的行在前端以表格形式显示出来,要求activityId相同时合并成一行,activityCode相同时,合并一行,activityVers ...

  3. asp.net core mvc剖析:路由

    在mvc框架中,任何一个动作请求都会被映射到具体控制器中的方法上,那框架是如何完成这样一个过程的,现在我们就来简单分析下流程. 我们紧跟上面的主题,任何一个请求都会交给处理管道进行处理,那mvc处理的 ...

  4. plugman创建cordova插件

    一.安装plumam npm install -g plugman 二.安装完之后,就可以创建plugin plugman create --name --plugin_id --plugin_ver ...

  5. BZOJ 2463: [中山市选2009]谁能赢呢?(博弈论)

    好吧我能说这道题我是猜过去的么= =,看到只有一个数x,x=2时alice赢,就猜奇数bob赢,偶数alice赢,然后就稀里糊涂过了= = 后来找了http://www.haogongju.net/a ...

  6. 来自高维的对抗 - 逆向TinyTool自制

    一.序 无论是逆向分析还是漏洞利用,我所理解的攻防博弈无非是二者在既定的某一阶段,以高维的方式进行对抗,并不断地升级维度.比如,逆向工程人员一般会选择在Root的环境下对App进行调试分析,其是以ro ...

  7. canvas画时钟,重拾乐趣!

    canvas时钟--效果图 一.先来简单介绍画时钟需要的canvas知识 1.在HTML页面中添加canvas元素,必须定义canvas元素的id属性值以便接下来的调用. HTML代码: <ca ...

  8. Omi教程-插件体系

    插件体系 Omi是Web组件化框架,怎么又来了个插件的概念? 可以这么理解: Omi插件体系可以赋予dom元素一些能力,并且可以和组件的实例产生关联. omi-drag 且看这个例子: 点击这里→在线 ...

  9. Java第三天

    0.注释: 目的:方便其他人阅读理解我们的代码 三种: // 单行注释,进行解释 /**/ 多行注释 /***/ 多行注释 (/***/注释通常用于方法,函数注释,在调用写好的方法或是函数时可以通过点 ...

  10. 前端性能监控:window.performance

    window.performance 是W3C性能小组引入的新的API,目前IE9以上的浏览器都支持.一个performance对象的完整结构如下图所示: memory字段代表JavaScript对内 ...