ES6:暂时性死区(TDZ)

let、const声明的变量、具有变量提升,但不赋值不能使用,不会预解析(TDZ);class定义之前调用会产生暂时性死区
使用let、const声明的变量,从一开始就形成了封闭作用域,在声明变量之前变量已经存在,但无法使用;只有等到let、const声明变量的那一行代码出现,才可以获取使用变量
当前作用域顶部到该变量声明位置中间的部分,都是该变量的死区;在死区中,禁止访问该变量
原理:
let/const在进入块级作用域后,会因为提升的原因先创建,但不会被初始化,直到声明语句执行的时候才被初始化;
初始化的时候如果使用let声明的变量没有赋值,则会默认赋值为undefined,而const必须在初始化的时候赋值;
所以创建到初始化之间的代码片段就形成了暂时性死区;
var在创建时就被初始化,并且赋值为undefined;
{
    console.log(myname);
    let myname= 'sdx ';
}//报错 
//在块作用域内,let声明的变量被提升,但变量只是创建被提升,初始化并没有被提升(初始化就是给变量先赋值成undefined),在初始化之前使用变量,就会形成一个暂时性死区





#笔记##个人随笔记#
全部评论
你们知道是怎么回事了吗?
点赞 回复 分享
发布于 2022-10-11 15:51 河南

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务