let

您所在的位置:网站首页 js英文什么意思 let

let

2023-09-14 20:06| 来源: 网络整理| 查看: 265

用 let、const 或 class 声明的变量可以称其从代码块的开始一直到代码执行到变量声明的位置并被初始化前,都处于一个“暂时性死区”(Temporal dead zone,TDZ)中。

当变量处于暂时性死区之中时,其尚未被初始化,并且任何访问其的尝试都将导致抛出 ReferenceError。当代码执行到变量被声明的位置时,变量会被初始化为一个值。如果变量声明中未指定初始值,则变量将被初始化为 undefined。

这与 var 声明的变量不同,如果在声明位置前访问 var 声明的变量会返回 undefined。以下代码演示了在声明位置前访问 let 和 var 声明的变量的不同结果。

js

{ // 暂时性死区始于作用域开头 console.log(bar); // undefined console.log(foo); // ReferenceError: Cannot access 'foo' before initialization var bar = 1; let foo = 2; // 暂时性死区结束(对 foo 而言) }

使用“暂时性”一词是因为这个区域取决于代码执行的时间点,而不是代码编写的顺序。例如,下面的代码能够运行,是因为虽然使用 let 变量的函数写在变量声明之前,但函数是在暂时性死区外面被调用的。

js

{ // 暂时性死区始于作用域开头 const func = () => console.log(letVar); // 没问题 // 在暂时性死区内访问 letVar 会抛出 `ReferenceError` let letVar = 3; // 暂时性死区结束(对 letVar 而言) func(); // 在暂时性死区外调用 }

在暂时性死区内对 let 声明的变量使用 typeof 运算符也会抛出 ReferenceError:

js

typeof i; // ReferenceError: Cannot access 'i' before initialization let i = 10;

这与对未声明的变量和存放 undefined 值的变量使用 typeof 运算符不同:

js

console.log(typeof undeclaredVariable); // "undefined"


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3