理解作用域,把作用域链比喻成一个建筑

1,341 阅读1分钟

前言

最近在看《YOU DON’T KNOW JS》一书,里面讲到作用域的嵌套,内容主要讲了两点:

一是作用域嵌套产生由来,其实就是当一个块或函数嵌套在另一个块或函数中时,就发生了作用域的嵌套;

二是查找变量的规则,引擎从当前的执行作用域开始查找变量,如果找不到,就向上一级继续查找。当抵达最外层的全局作用域时,无论找到还是没找到,查找过程都会停止

另外还有一个比喻我觉得挺有意思,也很好地帮我们理解作用域链,我将原文段落分享出来

把作用域链比喻成一个建筑

image.png

文中作者将作用域链比喻成一个建筑,建筑代表程序中的嵌套作用域链。第一层楼代表当前的执行作用域,也就是你所处的位置。建筑的顶层代表全局作用域。

LHS RHS 引用都会在当前楼层进行查找,如果没有找到,就会坐电梯前往上一层楼,如果还是没有找到就继续向上,以此类推。一旦抵达顶层(全局作用域),可能找到了你所需的变量,也可能没找到,但无论如何查找过程都将停止

参考资料

《YOU DON’T KNOW JS》上卷