CodeRookie262 / JavaScript-Algorithm-Training

巩固前端基础知识,了解框架实现原理,数据结构与算法训练。
9 stars 0 forks source link

浅谈作用域链查找机制。 #21

Open CodeRookie262 opened 3 years ago

CodeRookie262 commented 3 years ago

当我们要访问或者设置一个变量时,发现在当前作用域并未声明该变量却可以正常操作,有的时候却会报错,这些都和作用域链查找机制有关,作用域链是怎么回事呢,它又是如何进行查找的呢?

CodeRookie262 commented 3 years ago

作用域链查找就是假如函数在执行过程中当前上下文中的 AO 中查找不到对应的变量就会通过 Spoce-chain 进行向上查找,直到找到这个变量为止。如果最后走到了全局变量对象 VO(G) 中依然还是找不到这个对象就会报错 Uncaught ReferenceError: xxx is not defined;设置变量也是一样的道理,当前上下文中的 AO 中查找不到对应的变量就会通过 Spoce-chain 进行向上查找,直到找到这个变量为止。如果最后走到了全局变量对象 VO(G) 中依然还是找不到的话就会在全局变量对象VO(G)中声明同名变量并且设置值。