在JavaScript中,每个函数都有一个作用域对象,它保存了该函数的变量和函数声明。当函数被调用时,会创建一个新的执行上下文,并将其添加到调用栈顶部,这个执行上下文包含了当前的作用域对象。
链式作用域结构是指,在JavaScript中,每个作用域对象都有一个指向其父级作用域对象的引用。当我们在某个作用域内查找一个变量或函数时,如果当前作用域对象中不存在该变量或函数,则会沿着这条引用一直向上查找,直到找到该变量或函数为止,或者查找到全局作用域对象为止(如果仍然没有找到,则该变量或函数不存在)。
这种作用域结构被称为”链式”,因为它沿着作用域链向上寻找变量或函数,直到找到为止。链式作用域结构保证了在子作用域可以访问父作用域中的变量和函数,但是父作用域无法访问子作用域中的变量和函数。
这种作用域结构也被称为词法作用域,因为它是在代码编写期间就已经确定的,而不是在代码运行期间动态生成的。