一、闭包(closure)是JavaScript中非常重要的一个特性,这意味着当前作用域总是能够访问外部作用域中的变量。 因为函数是 JavaScript 中唯一拥有自身作用域的结构,因此闭包的创建依赖于函数。
了解闭包,首先得清楚两点:1.在JavaScript中函数也是一个对象。2.JavaScript中变量的作用域的范围。
首先,来看一个例子:
function foo(x){
var tmp = 3;//如果不用var声明,tmp就是一个全局变量
function bar(y){
console.log(x+y+(++tmp));
}
bar(10);
}
foo(2);//16
foo(2);//16
无论调用多少次,值都是16.当然这还不是闭包。返回一个函数,才是一个闭包。
function foo(x){
var tmp = 3;
return function(y){
console.log(x+y+(++tmp));
}
}
var bar = foo(2);//此时bar是一个闭包
bar(10);//16
bar(10);//17
bar(10);//18
我们用闭包实现了用bar读取foo函数中的局部变量tmp并且让tmp始终在内存中(从多次调用时,tmp值+1可以看出,tmp始终在内存中)。
                    
                
                
            
        
浙公网安备 33010602011771号