2026-10-21 14:08:12
JavaScript中的作用域是指变量和函数的可访问范围,它决定了代码中哪些部分可以访问特定的变量或函数。作用域分为全局作用域、函数作用域和块级作用域。
每个执行环境都有一个与之关联的变量对象,存储了所有变量和函数。当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途是,保证对执行环境有权访问的变量和函数可以有序访问。
通过Chrome浏览器的控制台可以看到调用栈(Call Stack)和作用域(Scope)信息。例如,当changeColor函数第一次调用时,会创建一个执行环境及相应的作用域链,并把作用域链赋值给一个特殊的内部属性[[Scope]]。然后使用this,arguments和其他参数的值来初始化活动对象(变量对象)。外部函数始终处于作用域第二位,外部函数的外部函数处于第三位,...直到作为作用域链终点的全局执行环境。





总之,JavaScript中的作用域是指变量和函数的可访问范围,它决定了代码中哪些部分可以访问特定的变量或函数。作用域分为全局作用域、函数作用域和块级作用域。每个执行环境都有一个与之关联的变量对象,存储了所有变量和函数。当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途是,保证对执行环境有权访问的变量和函数可以有序访问。