4-6编程

4-6编程

1、不能理解,为什么只有for循环结束才能进行下方函数,这个结合作用域怎么理解,能说的具体点么?

2、这个正确代码也不能理解,bindEvent不也是调用函数,这时为什么不是for循环完了再调用http://img1.sycdn.imooc.com//climg/5bbdd47200010c1603950150.jpg

正在回答

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

2回答

1、编程题中原来的代码:

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

进行for循环之后,给每一个按钮绑定了点击事件,但是当执行点击事件的时候,当前点击事件的作用域中没有保存i的值,就会向上找,找到for循环中的i,现在的值是3,所以弹出的值都是3+1=4。

2、而在你第一次贴的代码中,点击事件这个作用域中是i的保存的,就是bindEvent函数中的参数为局部变量,就会先找自己局部变量的值,而这个值与每一个按钮是相对应的。

这两段代码的区别就是在点击事件的作用域中是否有i值保存。

自己可以再测试理解下。

  • 慕圣0216546 提问者 #1
    谢谢!这位老师解释的每次都很清楚!非常感谢!
    2018-10-11 10:18:34
好帮手慕星星 2018-10-10 18:50:23

可以这样理解:

1、在for的时候,调用bindEvent方法,将每一个i值传递进去,然后给每一个按钮绑定上点击事件。

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

但是在bindEvent函数中,参数i是一个局部变量,在循环绑定每一个按钮的点击事件时,把这个i相对应值也就保存了下来,也就是在同一个作用域中。所以在执行点击事件的时候,弹出的i就是局部变量中的i,也就是每个按钮相对应的i值。

2、for循环就是每满足一次条件就会执行内部的代码啊,也就是把不同的i值传递进去,不可能只循环不执行内部代码。

自己再理解下,祝学习愉快~~

  • 提问者 慕圣0216546 #1
    问题1是针对4-6的代码提出的疑问,还是不太清楚1和2代码变量的区别 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>变量、作用域</title> </head> <body> <button>1</button> <button>2</button> <button>3</button> <script type="text/javascript"> // var btns = document.getElementsByTagName('button'); // for (var i = 0; i < 3; i++) { // btns[i].onclick = function () { // alert(i + 1); // }; // } //在此处修改代码 </script> </body> </html>
    2018-10-10 20:14:56
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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