块级作用域
Willem Zhang Lv5

let的作用域是块状作用域,在块中用let声明的变量只有在执行到块的‘{’的时候才会被环境记录所记录,记录的值为uninitialized。执行到let声明那一行才会被初始化或赋值。

类的作用域也是块状作用域。

而var的作用域是函数作用域,即使用var声明的变量在块中,当用var声明的变量所在函数被调用的时候,执行上下文中的变量环境也会将这个变量记录,并赋值为undefined。

var声明的作用域是函数作用域,当进入函数的时候,变量记录就会记录var声明并赋值为undefined。 (当函数被调用的时候才能进入函数)

let声明的作用域是块状作用域,当进入块的时候,词法环境的环境记录才会记录let声明并赋值为uninitialized。

1
2
3
4
5
6
7
8
9
function() { // 进入函数作用域

{ // 进入块状作用域
let a = 0;
var b = 1;

} // 退出块状作用域

} // 退出函数作用域

ref


https://juejin.cn/post/6968848594459688967
图有点错误,let声明的变量在执行上下文创建的初期在环境记录中的值应该为uninitialized

  • Post title:块级作用域
  • Post author:Willem Zhang
  • Create time:2021-11-22 17:26:38
  • Post link:https://ataraxia.top/2021/11/22/块级作用域/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
 Comments