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到底该怎么办呢。。。。。
展开
 我来答
衣衡呐9883
2017-08-03 · 超过46用户采纳过TA的回答
知道答主
回答量:193
采纳率:0%
帮助的人:37.2万
展开全部
这个问题我测试了一下

我先定义一个变量var g=0;
设置加载即运行,程序是有一个for循环,里面有一个鼠标事件函数,鼠标事件函数内也有个循环
然后把
console.log(g++);
这条语句放在三个地方,一个地方是for循环的大括号里,鼠标事件函数括号外,一个地方是鼠标事件函数括号里,鼠标事件内循环括号外,一个地方是鼠标事件内循环括号里
然后用浏览器打开,加载完成即运行函数,用控制台看结果。

结论是一开始运行没有触发鼠标事件函数的时候,for循环是会循环下去直至条件结束的,但因为没有触发鼠标事件,所以鼠标事件函数不会运行,但for循环的大括号里,鼠标事件函数括号外的console.log(g++);是可以运行,并会正常运行至直至条件结束。

当触发鼠标事件的时候,鼠标函数也是会正常运行,但for循环的大括号里,鼠标事件函数括号外的console.log(g++);不会运行,只会运行鼠标事件函数里面的语句。
一般来说,for循环只是充当定义多个对象的鼠标事件函数的作用,即使如果没有触发鼠标事件,也能完成循环。
追问
不是,这两个循环都在鼠标事件外面
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式