// 原题 for ( var i = 0 ; i < 10 ; ++i ) { setTimeout(function(){ console.log(i); },0) } // 运行结果: 10 10 10 10 10 10...
// ✔️解 let 声明块级作用域 使变量独立 变量如同 c 和 java 中一样执行 for ( let i = 0 ; i < 10 ; ++i ) { setTimeout(function(){ console.log(i); },0) } // ✔️解 for ( var i = 0 ; i < 10 ; ++i ) { setTimeout((function(a){ console.log(a); })(i),0) }
// 题 var funcs = []; for (var i = 0; i < 5; i++){ funcs[i] = function (){ console.log(i); }; }
funcs[2](); // 5
// ✔️解 var funcs = []; for (var i = 0; i < 5; i++ ) { (function(j){ funcs[j] = function(){ console.log(j); } })(i) }
funcs[2](); // ✔️解 var funcs = []; for (let i = 0; i < 5; i++){ funcs[i] = function (){ console.log(i); }; }