js作用域

20 阅读1分钟

1.理解

  • 一块地盘,一段代码所在区域
  • 是静态的(相对于上下文对象),在编码时就有。

2.分类

  • 全局作用域
  • 函数作用域
  • 块作用域let const

3.作用

  • 隔离变量,不同作用域下同名变量不会冲突

作用域与执行上下文区别

1.区别1

  • 全局上下文之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了,而不是在函数调用时
  • 全局执行上下文环境是在全局作用域确定之后,js代码执行之前创建
  • 函数执行上下文是在调用函数时,函数体代码执行之前创建

2.区别2

  • 作用域是静态的,只要函数定义好了就一直存在,且不会再变化
  • 执行上下文是动态的,调用函数时创建,函数调用结束时上下文环境就会被释放

3.联系

  • 上下文环境是从属于所在的作用域
  • 全局上下文环境属于全局作用域
  • 函数上下文环境属于对应函数作用域

查找变量过程

去当前变量的所在作用域的执行上下文对象中找,找不到再去上一级作用域执行上下文对象中找。 image.png