ES5
var a = [];
//ES5
for(var i=0;i<10;i++){
a[i] = function(){
console.log(i);
}
}
a[2]();
执行代码a[2]() 打印出来的值是10;
本人大致的理解是:函数里面获取i值时,只能获取到全局作用域的i,全局作用域的i就是循环体里面i"泄露"到全局的。
我不确定自己的理解是不是错了,希望听听大神的意见。谢过
ES5
var a = [];
//ES5
for(var i=0;i<10;i++){
a[i] = function(){
console.log(i);
}
}
a[2]();
执行代码a[2]() 打印出来的值是10;
本人大致的理解是:函数里面获取i值时,只能获取到全局作用域的i,全局作用域的i就是循环体里面i"泄露"到全局的。
我不确定自己的理解是不是错了,希望听听大神的意见。谢过
13 回答12.7k 阅读
7 回答1.8k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
6 回答775 阅读✓ 已解决
2 回答1.9k 阅读
6 回答1k 阅读
js
只有函数内是局部变量所有
for
循环内var i=0;
,i
是全局变量函数是在调用时取值的
调用时循环已结束i为10所以获取的是10