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]);
}
}
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
是
5次alert中的i引用的都是同一个i,而那时候的i已经是5了,而ele[5]就是undefined