JavaScript内嵌函数
所有函数都能访问全局变量。
实际上,在JavaScript中,所有函数都能访问它们上一层的作用域。
JavaScript支持嵌套函数。嵌套函数可以访问上一层的函数变量。
该实例中,内嵌函数plus()可以访问父函数的counter变量:
实例
function add(){
var counter=0;
function plus(){counter+=1;}
plus();
return counter;
}
如果我们能在外部访问plus()函数,这样就能解决计数器的困境。
我们同样需要确保counter=0只执行一次。
我们需要闭包。
JavaScript闭包
还记得函数自我调用吗?该函数会做什么?
实例
var add=(function(){
var counter=0;
return function(){return counter+=1;}
})();
add();
add();
add();
//计数器为3
实例解析
变量add指定了函数自我调用的返回字值。
自我调用函数只执行一次。设置计数器为0。并返回函数表达式。
add变量可以作为一个函数使用。非常棒的部分是它可以访问函数上一层作用域的计数器。
这个叫作JavaScript闭包。它使得函数拥有私有变量变成可能。
计数器受匿名函数的作用域保护,只能通过add方法修改。
如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h64747.shtml