let 您所在的位置:网站首页 编程里的定义变量是什么意思 let

let

2024-07-06 01:47| 来源: 网络整理| 查看: 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:

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

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

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

备注: let 和 const 声明仅在当前脚本被处理时才会被处理。如果在一个 HTML 中有两个以脚本模式运行的 元素,那么第一个脚本不会受到第二个脚本中顶层 let 或 const 变量的暂时性死区限制,尽管如果你在第一个脚本中声明了一个 let 或 const 变量,在第二个脚本中再次声明它将会导致重复声明错误。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有