那个弹出都是11的时候

那个弹出都是11的时候

为什么按钮的文案还是1到10呢 不是已经拿到了想要的自增i了吗 为什么点击只拿到了11

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

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

2回答
好帮手慕粉 2020-06-18 15:00:58

同学你好,是因为使用let声明的变量,是存在块级作用域的。

这里的{}是块级作用域。let只在当前的块级作用域内有效,下次在循环的时候,相当于又一个作用域,这次循环的i的值,在这个作用域内有效。

所以触发点击事件时就会找对应的块级作用域中的i。可以参考以下:

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

祝学习愉快~

好帮手慕粉 2020-06-15 11:15:54

同学你好,因为在for循环执行时,代码是依次遍历执行的:

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

所以按钮的内容依次是1-10。但是点击事件就不一样了,它是先绑定再执行的。我们在for循环中,依次为每一个按钮绑定点击事件,注意,此时只有绑定,并没有执行点击事件(只有点击按钮的时候才会执行),所以当for循环执行完毕后,也给所有的按钮绑定上了点击事件,此时的i值为11。当点击按钮执行点击事件时,就会弹出此时的i值,也就是11。

如果我的回答帮助了你,欢迎采纳。祝学习愉快~

  • 提问者 xchengguang #1
    那为什么用llet 就能解决这个问题呢
    2020-06-18 09:45:10
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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