1. Arguments对象
   l检测参数个数
  • 模拟函数重载

     function doAdd() {

2.变量的作用域
  l全局变量与局部变量(为什么)

l声明局部变量(没有使用var)

3.匿名函数

4.回调函数

l回调函数的优点:(总结)

l下面的代码,利用回调函数如何优化?

,并以数组的形式返回结果

function two(a, b, c){

var i, arr = [];

; i++){

arr;

}

return arr;

}

//将接收的参数加一后返回

function addone(a){

;

}

//测试上面的两个函数

alert));  //output  [2, 4, 6]

alert));  //output  101

//将三个数据在两个函数之间传递

var myarr = [];

myarr );

; i++){

myarr[i] = addone(myarr[i]);

}

alert(myarr);  //output  [21, 41, 61]

------------------------------------------------------------------------

/*

* 以上代码可以工作,但是显然不够优化。

* 这里使用了两次循环。如果处理的数据量很大火循环操作很复杂的话,开销一定不小。

*/

//优化之后的代码(修改two函数)

function two(a, b, c, callback){

var i, arr = [];

; i++){

arr);

}

return arr;

}

myarr , addone);

alert(myarr);  //output  [3, 5, 7]

//还可以使用匿名函数来替代addone函数

myarr ;});

5.自调函数

自调函数 —— 其实就是在定义函数后自行调用。(思考:自调函数的优点)
(1)例如:

(2)例如:

6.内部(私有)函数

function a(param){

function b(input){

;

};

return "The result is " + b(param);

}

alert));  //The result is 4

    解释说明:

总结:
 l私有函数的优点:

7.闭包
    7.1作用域链

例如2:

}

f();

    补充说明:    

例如3:

例如4:

    7.1闭包 
 

补充说明:

 
    7.1循环中的闭包 
        例如1:(小难)

}

例如2:(对比例1)

例如3:下面这种,是不使用自调函数的用法。

 
05-07 15:19