块级作用域
let的作用域是块状作用域,在块中用let声明的变量只有在执行到块的‘{’的时候才会被环境记录所记录,记录的值为uninitialized。执行到let声明那一行才会被初始化或赋值。
类的作用域也是块状作用域。
而var的作用域是函数作用域,即使用var声明的变量在块中,当用var声明的变量所在函数被调用的时候,执行上下文中的变量环境也会将这个变量记录,并赋值为undefined。
var声明的作用域是函数作用域,当进入函数的时候,变量记录就会记录var声明并赋值为undefined。 (当函数被调用的时候才能进入函数)
let声明的作用域是块状作用域,当进入块的时候,词法环境的环境记录才会记录let声明并赋值为uninitialized。
1 | function() { // 进入函数作用域 |
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