首先了解js引擎 解读 js代码 的两个步骤
- 提升
函数声明提升 和 变量声明提升(var) - 执行
执行代码
学习作用域问题
let / const 作用域是 块级作用域
var 作用域是 函数作用域
let const 声明之前 访问对应变量 会 报错 ReferenceError
var 则会得到 undefined
出现上述情况 是因为 前者(const/let)存在 ‘暂时性死区’
ES6规定了 暂时性死区 就是为了弥补var的不足 防止在变量声明前就使用变量 从而报错
补充
var 声明的变量 会变成window的一个属性
let const 不会