JavaScript 中的临时死区 (TDZ) 和提升:
临时死区(TDZ):临时死区是指进入作用域(如块或函数)和声明变量之间的时间段。在此区域中,任何访问变量的尝试都将导致引用错误。 TDZ 存在于初始化之前使用 let、const 和 class 声明的变量。
示例:
console.log(myVar); // 未定义
控制台.log(myLet); // ReferenceError: 初始化前无法访问 ‘myLet’
var myVar = 5;
让 myLet = 10;
在上面的示例中,myVar 是使用 var 声明的,因此它被提升并初始化为未定义。但 myLet 在声明之前一直处于临时死区,因此尝试在声明之前访问它会引发 ReferenceError。
TDZ 要点:
立即学习“Java免费学习笔记(深入)”;
使用 let 或 const 声明的变量在块作用域内声明之前不可访问,即使它们被提升。
这可以防止在显式初始化变量之前使用变量。
提升:提升是指 JavaScript 中的行为,其中变量和函数声明在编译阶段移动到其作用域的顶部(全局作用域或函数/块作用域)。但是,仅提升声明,而不提升初始化。
示例:
console.log(myVar); // 未定义
var myVar = 5;
在上面的例子中,myVar的声明被提升到顶部,但它的初始化(myVar = 5)仍然保留在它被写入的地方。因此,当在初始化之前调用 console.log(myVar) 时,它会返回 undefined。
var、let、const 和函数的提升:
var:用 var 声明的变量会被提升并用 undefined 初始化。
console.log(myVar); // 未定义
var myVar = 10;
let 和 const:使用 let 和 const 声明的变量会被提升,但不会被初始化。它们保留在 TDZ 中直至初始化。
console.log(myLet); // 引用错误
让 myLet = 20;
函数声明:函数声明是完全提升的,这意味着您甚至可以在代码中声明函数之前调用该函数。
myFunc(); //“你好!”
函数 myFunc() {
console.log(“你好!”);
}
提升和 TDZ 之间的主要区别:
提升将变量和函数声明提升到其作用域的顶部。
let、const 和 class 会出现临时死区,其中变量被提升,但在初始化之前无法访问。这可以防止在声明之前访问变量。
以上就是JavaScript 中的临时死区 (TDZ) 和提升:的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2668691.html