class的声明特征跟const和let类似,都是作用于块级作用域,都有暂时性死区, 预处理阶段则会屏蔽外部变量。因此在声明之前访问变量a都会报错,在声明之后访问才可以正常输出。
依据以下JS代码,在位置A打印变量a与在位置B打印变量a各会有怎样的输出?
A
1、class a {}
B
报错、class a {}
C
报错、报错
D
1、报错
正确答案:B
class的声明特征跟const和let类似,都是作用于块级作用域,预处理阶段则会屏蔽外部变量。因此在声明之前访问变量a都会报错,在声明之后访问才可以正常输出。
class和let一样都有暂时性死区,在被声明前无法访问
也就是在当前作用域能找到,但是要在声明后才能访问
es6中的class和let const一样都不存在提升
(实际存在提升,只是因为TDZ的作用,并不会像var那样得到undefined,而是直接抛出错误)
原来的代码
var a = 1;
function test(){
//console.log(a) 位置A
class a {}
// console.log(a) 位置B
}
test();
实际上提升后的
var a = 1;
function test(){
console.log(a) 位置A //在test()作用域内找得到a
//是一个class但是存在TDZ暂时性死区,访问报错
class a {}
console.log(a) 位置B //a已经声明创建出来了
}
test()
__EOF__

本文作者:龙陌
本文链接:https://www.cnblogs.com/longmo666/p/17835042.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/longmo666/p/17835042.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
标签:
js变量提升
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)