怪奇物语

怪奇物语

首页 新随笔 联系 管理

什么是 TDZ

Temporal Dead Zone(TDZ) 是 ES6(ES2015) 中对作用域新的专用语义。

let/const 和 var 的区别

es6之前

在 ES6 之前,JS 的 scope 只有两种,全局作用域和函数作用域,

es6之后

在 ES6 种出现了块级作用域,即使用 let/const 可以定义块级作用域

两个地方的区别

  1. let/const 是使用区块作用域;var 是使用函数作用域

  2. 在 let/const 声明之前就访问对应的变量与常量,会抛出 ReferenceError 错误;但在 var 声明之前就访问对应的变量,则会得到 undefined

console.log(Vname); // => undefined;
console.log(Lname); // => ReferenceError
var Vname = 'xiaoxiao';
let Lname = 'xiaoxiao';

暂时性死区

image
image

  1. ES6 明确规定,如果区块中存在 let 和 const 命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。 总之,在代码块内,使用 let 命令声明变量之前,该变量都是不可用的。这在语法上,称为 “暂时性死区”(temporal dead zone,简称 TDZ)。
posted on 2022-02-11 11:28  超级无敌美少男战士  阅读(253)  评论(0)    收藏  举报