总结笔记
自由变量:在函数中使用,但不是形参和局部变量的变量。
经典例子:
第一种方法:
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