关于作用域链问题

来源:4-5 编程练习

你好大猫

2019-06-02 11:50:49

http://img.mukewang.com/climg/5cf347090001c29005260382.jpg

http://img.mukewang.com/climg/5cf34709000160f405180438.jpg

代码都是我自己写的,图一:先进行循环for,后触发事件,由于每个按钮都能触发证明事件设置成功,调用的i值函数内没有var声明,向上查找,找到i=3;

图二我写出来之后就想不通。不知道是从作用域链考虑还是js解析机制考虑,求老师给一个详细的答复,谢谢

写回答

1回答

好帮手慕慕子

2019-06-02

同学你好,

1、 对于第一种写法你的理解是可以的,不过有一些偏差, 第一种方法是没有一个作用域保存每一次循环的i值,所以当执行点击事件的时候,就会沿着当前作用域找到for循环中的i,而for循环中i已经是循环完之后的了,所以每次点击都是同一个i值

2、 对于第二种写法可以从作用域链来理解,每循环一次就调用一次check函数, 在函数的作用域中会保存当前的i值, 所以每次点击的时候, 向上查找作用域就是找到check函数中保存的不同的i值

同学可以结合老师的解释, 试着理解一下哦

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

1

0 学习 · 14456 问题

查看课程