关于4-5编程练习

关于4-5编程练习

  var btns = document.getElementsByTagName('button');
         for (let i = 0; i < 3; i++) {
          btns[i].onclick = function () {
       alert(i + 1);}
    }

如果是用ES6的方式来写的话,,把var换成let就可以实现效果。

但是这个该怎么去理解呢。求解,谢谢了。。

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

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

1回答
卡布琦诺 2017-07-17 09:54:34

因为i用var定义,那么他在全局范围内都是生效的,也就是我们循环结束以后,i的值就是4,那么不管怎么循环,alert(i + 1) 输出的都是4, let因为有了块级作用域,就可以避免这个问题。如果一个变量是使用let定义的,那么这个变量就属于声明时所在的代码块,也就是变量不再受外部影响。希望可以帮到你!

  • 提问者 西岚Silan #1
    就是说var定义的话,i就会被覆盖,如果是let定义,他只存在于方法被触发到结束的那个周期。是这个意思吗
    2017-07-19 19:43:50
  • 卡布琦诺 回复 提问者 西岚Silan #2
    可以这么理解~
    2017-07-20 18:05:22
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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