JavsScript作用域链
什么是作用域链?
首先要理解什么是作用域,任何语言在设计的时候都会有设定变量的作用,比如类C语言中都是使用{} 来确定变量的作用域。但是在javascript当中,作用域是当前对象的执行环境(当前代码执行的上下文对象),最外层是全局执行环境也就是window。在类C语言中可以经常看到类似这种块级作用域 {
{
{}
{}
}
} ,一层包着一层,在javascript当中其实也是这样的,只不过javascript不用{}块级作用域来限制变量的作用范围,而是用作用域链。
那么什么是作用域链呢? 作用域链就是保证对执行环境有权访问的所有变量和函数的有序访问。通俗一点的说就是将各种层级包含关系的“块级作用域” 等价于一条链,通过这条链我们可以找到当前执行环境的变量范围。比如我们在类C语言中的{{}{{}}}{} 块级作用域,我们想要确认在某个块级作用域中能够访问的变量,只需要看层级包含关系就可以了,但是在javascript中没有这种“块级作用域” 必须在脑海中勾勒出当前执行环境的作用域链,才能确定当前执行环境的变量。

浙公网安备 33010602011771号