js - 作用域

ru shui 2021-09-15 Javascript
  • Javascript
About 1 min

# 作用域

# 全局作用域

  1. 全局作用在页面打开时被创建,页面关闭时被销毁。
  2. script 中写的函数和变量,作用域为全局,在页面的任意位置都可以访问到。
  3. 全局作用域有全局对象 window,代表一个浏览器窗口,由浏览器创建,可以直接使用。
  4. 全局作用域中声明的变量和函数(使用 constlet 声明的变量不会)会作为 window 对象的属性和方法保存。

# 函数作用域

  1. 函数调用时,函数作用域会被创建,函数执行完毕,函数作用域作用域会被销毁。
  2. 每调用一次函数就会创建一个新的函数作用域,它们之间是彼此独立的。
  3. 在函数作用域中可以访问到全局作用域中的变量,在函数外无法访问到函数作用域内的变量(闭包除外)。
  4. 在函数作用域中访问变量、函数时,会先在自身作用域中寻找,如果没有找到相应的变量、函数的话,就会沿着作用域链不断查找,直到找不到为止。

# 作用域的深层次理解

  1. 执行上下文。
    • 在函数执行前期,会创建一个执行上下文的内部对象 AO
    • 这个内部对象 AO 时在预编译的时候创建的。
    • 在全局代码执行前期,会创建在全局执行上下文中创建一个全局内部对象 GO(原理一样,可以将 js 代码看成一个全局函数的执行)。
Last update: September 25, 2021 10:42
Contributors: Laishuxin