js中,for循环嵌套,在里层for循环内的click函数内获取外层for循环变量时返回值不正确。 10
for(varj=0;j<a.length;j++){for(vari=0;i<b.length;i++){;(function(index){b[index].oncl...
for(var j = 0; j<a.length; j++){
for(var i = 0; i<b.length; i++){
;(function(index){
b[index].onclick = function(){
console.log(a[j]); //返回值为undefined;
}
})(i);
}
}
求教大神,本来j应该为0~5,但是在内部直接返回了6,所以返回了undefined到底该怎么办呢。。。。。 展开
for(var i = 0; i<b.length; i++){
;(function(index){
b[index].onclick = function(){
console.log(a[j]); //返回值为undefined;
}
})(i);
}
}
求教大神,本来j应该为0~5,但是在内部直接返回了6,所以返回了undefined到底该怎么办呢。。。。。 展开
1个回答
展开全部
这个问题我测试了一下
我先定义一个变量var g=0;
设置加载即运行,程序是有一个for循环,里面有一个鼠标事件函数,鼠标事件函数内也有个循环
然后把
console.log(g++);
这条语句放在三个地方,一个地方是for循环的大括号里,鼠标事件函数括号外,一个地方是鼠标事件函数括号里,鼠标事件内循环括号外,一个地方是鼠标事件内循环括号里
然后用浏览器打开,加载完成即运行函数,用控制台看结果。
结论是一开始运行没有触发鼠标事件函数的时候,for循环是会循环下去直至条件结束的,但因为没有触发鼠标事件,所以鼠标事件函数不会运行,但for循环的大括号里,鼠标事件函数括号外的console.log(g++);是可以运行,并会正常运行至直至条件结束。
当触发鼠标事件的时候,鼠标函数也是会正常运行,但for循环的大括号里,鼠标事件函数括号外的console.log(g++);不会运行,只会运行鼠标事件函数里面的语句。
一般来说,for循环只是充当定义多个对象的鼠标事件函数的作用,即使如果没有触发鼠标事件,也能完成循环。
我先定义一个变量var g=0;
设置加载即运行,程序是有一个for循环,里面有一个鼠标事件函数,鼠标事件函数内也有个循环
然后把
console.log(g++);
这条语句放在三个地方,一个地方是for循环的大括号里,鼠标事件函数括号外,一个地方是鼠标事件函数括号里,鼠标事件内循环括号外,一个地方是鼠标事件内循环括号里
然后用浏览器打开,加载完成即运行函数,用控制台看结果。
结论是一开始运行没有触发鼠标事件函数的时候,for循环是会循环下去直至条件结束的,但因为没有触发鼠标事件,所以鼠标事件函数不会运行,但for循环的大括号里,鼠标事件函数括号外的console.log(g++);是可以运行,并会正常运行至直至条件结束。
当触发鼠标事件的时候,鼠标函数也是会正常运行,但for循环的大括号里,鼠标事件函数括号外的console.log(g++);不会运行,只会运行鼠标事件函数里面的语句。
一般来说,for循环只是充当定义多个对象的鼠标事件函数的作用,即使如果没有触发鼠标事件,也能完成循环。
追问
不是,这两个循环都在鼠标事件外面
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询