什么是 TDZ
Temporal Dead Zone(TDZ) 是 ES6(ES2015) 中对作用域新的专用语义。
let/const 和 var 的区别
es6之前
在 ES6 之前,JS 的 scope 只有两种,全局作用域和函数作用域,
es6之后
在 ES6 种出现了块级作用域,即使用 let/const 可以定义块级作用域
两个地方的区别
-
let/const 是使用区块作用域;var 是使用函数作用域
-
在 let/const 声明之前就访问对应的变量与常量,会抛出 ReferenceError 错误;但在 var 声明之前就访问对应的变量,则会得到 undefined
console.log(Vname); // => undefined; console.log(Lname); // => ReferenceError var Vname = 'xiaoxiao'; let Lname = 'xiaoxiao';
暂时性死区
- ES6 明确规定,如果区块中存在 let 和 const 命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。 总之,在代码块内,使用 let 命令声明变量之前,该变量都是不可用的。这在语法上,称为 “暂时性死区”(temporal dead zone,简称 TDZ)。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战