JS一星期旅途(第一天)

1.闭包

  •    定义:

        指有权访问另一个函数作用域中的变量的函数。比如:函数中创建函数,跟据作用链得知,外层函数有权访问内部函数的变量,即称该内部的函数为闭包。

  •         益处:

 从外部读取局部变量  eg:

 

 1  function f1(){
 2 
 3       n=999;
 4 
 5       function f2(){
 6         alert(n);
 7       }
 8 
 9       return f2;
10 
11     }
12 
13     var result=f1();
14 
15     result(); // 999 访问函数局部变量n
例子

 

让这些变量的值始终保持在内存中 eg:

 

 1  function f1(){
 2 
 3     var n=999;
 4 
 5     nAdd=function(){n+=1}
 6 
 7     function f2(){
 8       alert(n);
 9     }
10 
11     return f2;
12 
13   }
14 
15   var result=f1();
16 
17   result(); // 999
18 
19   nAdd();
20 
21   result(); // 1000
例子

 

    

2.js是没用块级作用域的,但可以模仿

 

function(){})();//在此定义的变量只在该括号内有效,实现块级作用域的效果。

var a=function(){}; a();->(function(){})();//取代a,就演化成该式

 

 

3.作用域一层一层的向上搜索


var aNumber = 100;
tweak();

function tweak(){

    document.write(aNumber);
    //结果:undefined 因为在函数内搜索至变量 var aNumber 

     var aNumber = 123;  

}

 

 

 

posted @ 2014-05-27 23:55  爱情指针  阅读(157)  评论(0)    收藏  举报