代码改变世界

JS的闭包性

2017-12-31 23:29  那些年111  阅读(184)  评论(0)    收藏  举报

   JS语言里每个函数都是独立的作用域,如一个个小黑屋,它可以获取外界信息,但是外界却无法直接看到里面的内容。将变量 n 放进小黑屋里,除了 b 函数之外,没有其他办法能接触到变量 n,而且在函数 a 外定义同名的变量 n 也是互不影响的,这就是所谓的增强“封装性”。这是缺点也是优点。应用场景:封装成私有成员变量,保证变量的安全性。

 

代码:

function a(){ 

 var n=0;   

 function b(){  

 n++; 

  console.log(n);

  

  return b;//很重要,将b于外界建立联系,保证n在a函数作用域内变化  

}  

var c=a(); 

 c();//1

  c();//2