阅读:2788 次 编辑日期:2013-12-31
var a = 1; function uw3c(){ alert(a);//1 } uw3c();
function uw3c1(){ var a = 1; } uw3c(); alert(a);//not defined
function uw3c_1(){ var a = 1; function uw3c_2(){ alert(a); } return uw3c_2; } var test = uw3c_1(); test();//1
function uw3c_1(){ var a = 1; uw3c_3 = function(){ a += 1;} function uw3c_2(){ alert(a); } return uw3c_2; } var test = uw3c_1(); test();//1 uw3c_3(); test();//2
var firstClosure; var secondClosure; function uw3c() { var x = 1; firstClosure = function () { return ++x; }; secondClosure = function () { return --x; }; x = 2; // 在同一个作用域中修改变量 alert(firstClosure()); // 3, 通过 firstClosure的作用域 } uw3c(); alert(firstClosure()); // 4 alert(secondClosure()); // 3
var data = []; for (var k = 0; k < 3; k++) { data[k] = function () { alert(k); }; } data[0](); // 3, 而不是 0 data[1](); // 3, 而不是 1 data[2](); // 3, 而不是 2
var data = []; for (var k = 0; k < 3; k++) { data[k] = (function _helper(x) { return function () { alert(x); }; })(k); // 将 "k" 值传递进去 } // 现在就对了 data[0](); // 0 data[1](); // 1 data[2](); // 2