不能理解最里面的index是何时赋值的

不能理解最里面的index是何时赋值的

for循环每次都会立即调用show(i)函数,此时会在show函数里面定义每一个onclick 事件,但是onclick只是一个监听事件,点击事件触发的时候是怎么取到对应的index的呢?难道index值在事件定义的时候已经保存在事件函数里面了?

for (var i = 0; i < 3; i++) {

show(i);

}

function show(index) {

btns[index].onclick = function () {

alert(index + 1);

};

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕星星 2019-05-24 09:59:08

你好,在for循环的时候就调用了show方法,传入了参数i到方法中,show方法中有参数index,可以理解为局部变量,保存在当前环境中,那么执行点击事件的时候就会找到相应的局部变量i 。

自己可以再理解下,祝学习愉快!

好帮手慕夭夭 2019-05-21 11:14:30

你好同学,因为函数会形成一个局部作用域,所以代码中循环调用了3次函数,形成3个不同作用域。所以i的值已经传递给对应的index参数了,可以通过如下理解:

http://img1.sycdn.imooc.com//climg/5ce36d100001a52e08170589.jpg

祝学习愉快 ,望采纳。

  • 提问者 fangfangfang2019 #1
    我想问的是,onclick里面的index是怎么赋值的,onclick也是一个方法啊,不应该在调用时才给里面的变量传值吗?
    2019-05-21 11:51:55
  • 好帮手慕夭夭 回复 提问者 fangfangfang2019 #2
    就像老师给同学提供的截图中,每一个按钮的点击事件都在自己的函数作用域里面。index在函数show调用的时候,i的值已经传递给index了哦。所以当点击按钮的时候,每一个事件拿到的是自己作用域里面的index值。
    2019-05-21 13:48:09
  • 提问者 fangfangfang2019 回复 好帮手慕夭夭 #3
    @灰灰520老师,我想问的是,onclick里面的index是怎么赋值的,onclick也是一个方法啊,不应该在调用时才给里面的变量传值吗?
    2019-05-23 23:17:42
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师