-
**作用域:**变量的使用范围
-
全局作用域:所有直接写在 script 标签中的内容都位于全局作用域
-
局部作用域:作用于函数内部的变量范围叫局部作用域(局部作用域可以访问全局作用域中的数据)
-
块级作用域:ES6 新增的作用域,使用 let、const 定义的变量作用域大括号直接时,就会产生块级作用域。
-
当函数的形参有默认值时,则当前函数内会额外创建一个块级作用域,函数中的代码会在块级作用域中执行
-
在使用 let、const 声明的变量前访问该变量时会出现 暂时性死区,即报错
-
**作用域链:**变量的查找规则
-
解析:当 JS 引擎查找变量时会首先在当前作用域的变量对象中查找,如果没有查找到该变量就会继续向上层作用域中进行查找,直至找到全局作用域。此时如果还没有找到则报错:xxx is not defined
-
**执行上下文:**指函数被调用时在执行栈中产生的当前函数的执行环境
-
全局执行上下文:在全局作用域内的执行环境叫全局执行上下文
-
函数执行上下文:当函数被调用时,会产生独立的执行环境,该执行环境就叫做函数执行上下文;当函数执行完毕时,该函数执行上下文会被销毁