简单的JavaScript部分:了解let声明

智能甄选 2018-02-06 10:25:26

了解关于JavaScript中的“let”语句的所有信息,这使您可以在JavaScript中轻松创建块范围的本地变量。

使用该  let 语句,您可以在JavaScript中创建块范围的本地变量。该  let  声明是在JavaScript的ECMAScript 6标准中引入的。

在继续学习之前  let,我建议您查看Infragistics基于jQuery的库Ignite UI,它可以帮助您更快地编写和运行Web应用程序。您可以使用Ignite UI for JavaScript库来帮助快速解决HTML5,jQuery,Angular,React或ASP.NET MVC中复杂的LOB需求。(您可以在这里下载Ignite UI的免费试用版。)

在ECMAScript 6之前,JavaScript有三种类型的范围:

全球范围界定

功能范围

词汇范围

要详细了解let语句,请考虑下面给出的代码片段:

function foo() {     var x = 9;     if (x > 5) {         var x = 7;         console.log("Value of x in if statement = " + x);     }     console.log("Value of x outside if statement = " + x); } foo();

你会得到这个输出上面的代码清单:

在上面的列表中,变量  x 是使用  var 语句声明的。因此,变量的范围  x 是一个函数范围。变量  x  里面  if statemnet是同一个变量  x ,其创建外面的  if 说法。因此,当您修改 语句块x  内的变量值时  if,它会修改函数中所有变量引用的值  x 。

为了避免这种情况,您需要块级范围,并且该  let 语句允许您创建块范围的局部变量。

让我们修改上面的代码片段,并使用  let 语句来声明变量:

function foo() {     var x = 9;     if (x > 5) {         let x = 7;         console.log("Value of x in if statement = " + x);     }     console.log("Value of x outside if statement = " + x); } foo();

在上面的代码片段中,您使用let 语句声明了作用域级本地变量x  。因此,更新if 语句内变量x的  值不会影响if 语句外的变量x的值  。

这是你会得到上面的代码的输出:

与用var声明的函数范围(或全局范围)变量不同,用let声明的变量是块范围的:它们只存在于它们定义的块中。

让变量吊装

声明变量的变量与变量声明的变量  let 不同var。因此,对于用let声明的变量没有变量提升,这意味着声明的变量  let 不会移动到执行上下文的顶部。

为了更好地理解这一点,我们来考虑这个代码:

function foo() {     console.log(x);     console.log(y);     var x = 9;     let y = 67; } foo();

作为输出,你会得到一个  ReferenceError 变量  y,这是用  let 声明声明的。所以,声明的变量  let 不会在执行上下文中提升。

使用let来重新声明变量

你不能用相同的函数或块来重新声明一个变量。试图这样做会给你一个语法错误。考虑这个代码清单:

function foo() {     if(true){         let x = 9;         let x = 89;      } } foo();

运行上面的代码会给你一个语法错误,如下所示:

暂时死亡区随着让

有时用let声明的变量会导致暂时的死区。在下一个代码清单中,  let x=x+67 会抛出x未定义的异常。

你会得到这个错误,因为表达式(x + 67)正在计算一个  if 块范围的局部变量x,而不是函数范围的局部变量x。在运行上面的代码,你会得到这个异常:

您可以通过将声明变量移动到表达式上方一行来修复上述错误,如下所示:

块级范围是所有编程语言中最重要的功能之一,通过引入letECMAScript 6 中的  语句,现在JavaScript就有了它。使用该  let 语句,您可以创建一个变量,该变量的生命周期范围为一个块。这解决了许多问题,如意外修改全局级范围变量,关闭中的局部变量,并帮助编写更清晰的代码。

在这个“简单的JavaScript”系列的下一篇文章中,您将学习JavaScript函数中的其余参数。您可以在ECMA International网站上详细了解这些主题。此外,不要忘记检查Ignite UI,您可以使用HTML5,Angular,React或ASP.NET MVC创建富Internet应用程序。

0 阅读:1
智能甄选

智能甄选

技术交流、资源共享,是程序员的网上乐园。