JavaScript词法环境

85 阅读1分钟

最近在看JavaScript的词法环境,遇到了一些不懂的地方,发现了一个致命的问题就是我没有考虑变量提升导致有一些地方没有想清楚,下面是一些我的学习总结: 词法环境是每个代码块都有的,它由两部分组成: 1.环境记录---个储存所有局部变量作为其属性 2.外部词法环境

Snipaste_2022-05-15_12-59-12.png 在脚本刚开始运行时,词法环境预先填充了所有的变量和函数,不同处在于最初变量是处于未初始化状态,而函数的初始会立即完成

Snipaste_2022-05-15_13-46-38.png 有一个注意点虽然let变量不会提升,但是它未初始化时会提升

var x = 1;

function func() {
  
  console.log(x); // Uncaught ReferenceError: Cannot access 'x' before initialization
  let x =0
}
func()

ll