ES6语法学习day2之暂时性死区
时间:2026-07-02 标签: 分享, ES6, 语法,暂时性死区第二关
1 | if (true) { |
效果
1 | PS C:\Users\Admin\Documents\node-learn> node .\7.js |
这个案例可以看出,在没有声明之前赋值,会直接抛出 ReferenceError
暂时性死区的 typeof
在暂时性死区下 typeof 将不再是百分百安全的操作
1 | typeof x; // ReferenceError |
效果
1 | PS C:\Users\Admin\Documents\node-learn> node .\8.js |
在 let x 之前,都属于 x 的死区
与之相反,代码中如果没有 let x ,就不存在 x 的死区
1 | // typeof x; // ReferenceError |
效果
1 | PS C:\Users\Admin\Documents\node-learn> node .\8.js |
隐蔽的死区
有些死区也比较隐蔽
1 | function bar(x = y, y = 2) { |
1 | PS C:\Users\Admin\Documents\node-learn> node .\9.js |
正确写法
1 | function bar(x = 2, y = x) { |
输出
1 | PS C:\Users\Admin\Documents\node-learn> node .\10.js |
如果你想让代码返回 bar() 的值,则把 bar() 改成 console.log(bar()),即
1 | function bar(x = 2, y = x) { |
结果
1 | PS C:\Users\Admin\Documents\node-lear |
let 与 var行为不同
1 | // 不报错 |
效果
1 | PS C:\Users\Admin\Documents\node-learn> node .\11.js |
总之
总之,暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量