手机版

理解JavaScript中的let语句

时间:2021-08-23 来源:互联网 编辑:宝哥软件园 浏览:

使用let语句可以在JavaScript中创建块范围的局部变量。let语句是在JavaScript的ECMAScript 6标准中引入的。

在进入let语句之前,我建议您检查基于Infragistics jQuery库的Ignite UI,它可以帮助您更快地编写和运行Web应用程序。可以使用JavaScript库的Ignite UI快速解决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(' if语句中x的值=' x ');} console . log(' if语句外x的值=' x ');} foo();上述代码的输出:

在上面的代码中,我们使用var语句来声明变量x,因此,变量x的范围就是函数范围。if语句中的变量x是在if语句之外创建的变量x。因此,当您在if语句块中修改变量x的值时,也将修改函数中变量x的所有引用的值。

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

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

function foo(){ var x=9;if(x ^ 5){让x=7;console . log(' if语句中x的值=' x ');} console . log(' if语句外x的值=' x ');} foo();在上面的代码片段中,我们使用let语句来声明范围级局部变量x。因此,更新if语句中变量x的值不会影响if语句之外变量x的值。

以下是上述代码的输出:

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

可变促销

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

为了更好地理解这一点,请查看以下代码:

function foo(){ console . log(x);console . log(y);var x=9;设y=67} foo();作为输出,您将获得变量y的ReferenceError,它是用let语句声明的。用let声明的变量不会提升到执行上下文之上。

变量的重新声明

不能使用let在同一个函数或块中重新声明变量。这样做会导致语法错误。请参见以下代码:

function foo(){ if(true){ let x=9;设x=89} } foo();运行上述代码将导致语法错误,如下所示:

暂时死区

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

出现此错误的原因是表达式(x 67)在if块的范围内寻找局部变量x的值,而不是函数范围内的局部变量x的值。运行上面的代码,您会得到如下异常:

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

块级作用域是任何编程语言最重要的功能之一,随着ECMAScript 6中let语句的引入,JavaScript现在有了这个功能。使用let语句允许您创建一个其范围在块范围内的变量。这可以解决很多问题,比如全局范围变量、闭包中的局部变量的意外修改,有助于编写更清晰的代码。

简易JavaScript,第1:部分学习“let”语句

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:理解JavaScript中的let语句是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。