understandinges6-simplified-chinese icon indicating copy to clipboard operation
understandinges6-simplified-chinese copied to clipboard

理解错误或表达不清晰

Open ezqrq opened this issue 4 years ago • 0 comments

书中写到: 长久以来 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。

ezqrq avatar Jun 30 '20 04:06 ezqrq