var ele='hello';
function test(){
for(var i=0;i<ele.length;i++){
setInterval(function(){
alert(ele[i]); //undefined
},50);
//alert(ele[i]);
}
}
test();
问题:为什么for循环中五次显示的都是undefined,而不是hello的中五个字母?
这里是不是由于闭包而产生的问题?
var ele='hello';
function test(){
for(var i=0;i<ele.length;i++){
setInterval(function(){
alert(ele[i]); //undefined
},50);
//alert(ele[i]);
}
}
test();
问题:为什么for循环中五次显示的都是undefined,而不是hello的中五个字母?
这里是不是由于闭包而产生的问题?
var ele='hello';
function test(){
for(var i=0;i<ele.length;i++){
var timer = setInterval(
function(n){
return function(){
alert(ele[n]);
//undefined
}}(i),50);
//alert(ele[i]);
}
}
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答2.6k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答867 阅读✓ 已解决
6 回答1k 阅读
是
5次alert中的i引用的都是同一个i,而那时候的i已经是5了,而ele[5]就是undefined