understandinges6-simplified-chinese
understandinges6-simplified-chinese copied to clipboard
理解错误或表达不清晰
书中写到: 长久以来 var 声明的特性使得在循环中创建函数问题多多,因为循环中声明的变量在块外也可以被访问,考虑如下的代码: var funcs = [];
for (var i = 0; i < 10; i++) { funcs.push(function() { console.log(i); }); }
funcs.forEach(function(func) { func(); // 输出 "10" 共10次 }); 会输出10次10并不是因为循环中声明的变量在块外也可以被访问。考虑如下代码: var funcs = [];
fn1();
funcs.forEach(function(func) { func(); // 输出 "10" 共10次 });
function fn1() { for (var i = 0; i < 10; i++) { funcs.push(function() { console.log(i); }); } } 输出的依然是10个10。