闭包笔记
总结笔记
自由变量:在函数中使用,但不是形参和局部变量的变量。
经典例子:
第一种方法:
var data=[];
for (var k=0; k<3; k++){
data[k] = (function(x){
return function(){
alert(x)
};
})(k);
}
data[0]();
data[1]();
data[2]();
第二种方法:将k改为let声明
var data=[];
for (let k=0; k<3; k++){
data[k] = function(){
alert(k);
};
}
data[0]();
data[1]();
data[2]();
第三种方法:(callee已废除)
var data = [];
for (var k=0; k<3; k++){
(data[k] = function(){
alert(arguments.callee.x)
}).x = k;
}
data[0]();
data[1]();
data[2]();
内部函数共享一个父作用域
function foo(){
var x = 1;
a = function(){
alert(x);
};
x =2;
}
foo();
a(); //2

浙公网安备 33010602011771号