前言
最近在看《YOU DON’T KNOW JS》
一书,里面讲到作用域的嵌套,内容主要讲了两点:
一是作用域嵌套产生由来,其实就是当一个块或函数嵌套在另一个块或函数中时,就发生了作用域的嵌套;
二是查找变量的规则,引擎从当前的执行作用域开始查找变量,如果找不到,就向上一级继续查找。当抵达最外层的全局作用域时,无论找到还是没找到,查找过程都会停止
另外还有一个比喻我觉得挺有意思,也很好地帮我们理解作用域链,我将原文内容分享出来
把作用域链比喻成一个建筑
文中作者将作用域链比喻成一个建筑,建筑代表程序中的嵌套作用域链。第一层楼代表当前的执行作用域,也就是你所处的位置。建筑的顶层代表全局作用域。
LHS
和 RHS
引用都会在当前楼层进行查找,如果没有找到,就会坐电梯前往上一层楼,如果还是没有找到就继续向上,以此类推。一旦抵达顶层(全局作用域),可能找到了你所需的变量,也可能没找到,但无论如何查找过程都将停止
参考资料
《YOU DON’T KNOW JS》
网友评论