在书上看到了一个与闭包相关的错误:
function func() { var arr = [], i; for(i=0; i<6; i++){ arr[i] = function () { return i; //Mutable variable is accessable from closure } } return arr; } var arr1 = func(); for(var j=0; j<arr1.length; j++){ console.log("arr1[j]() is: " + arr1[j]()); }
当程序运行完 var arr1 = func();这行是,i的值为6 , 当我们再运行到console.log("arr1[j]() is: " + arr1[j]()); 这行时 再操作i ,i的值就为6了。
估计刚接触JS的同仁,或没有仔细理解这段代码的话会和程序运行结果产生歧义。