关于作用域链问题
来源:4-5 编程练习
你好大猫
2019-06-02 11:50:49


代码都是我自己写的,图一:先进行循环for,后触发事件,由于每个按钮都能触发证明事件设置成功,调用的i值函数内没有var声明,向上查找,找到i=3;
图二我写出来之后就想不通。不知道是从作用域链考虑还是js解析机制考虑,求老师给一个详细的答复,谢谢
1回答
同学你好,
1、 对于第一种写法你的理解是可以的,不过有一些偏差, 第一种方法是没有一个作用域保存每一次循环的i值,所以当执行点击事件的时候,就会沿着当前作用域找到for循环中的i,而for循环中i已经是循环完之后的了,所以每次点击都是同一个i值
2、 对于第二种写法可以从作用域链来理解,每循环一次就调用一次check函数, 在函数的作用域中会保存当前的i值, 所以每次点击的时候, 向上查找作用域就是找到check函数中保存的不同的i值
同学可以结合老师的解释, 试着理解一下哦
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~
相似问题