轻松学习 JavaScript——第 1 有的:精通 let 语句

变量提高

动用let申明的变量进步分裂于使用var申明的变量。由此,使用let声明的变量没有变量进步,那意味使用let表明的变量不会移动到执行上下文的顶部。

为了更好地精通那点,请看以下那段代码:

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

用作出口,你将获得变量y的ReferenceError,变量y使用let语句表明。使用let阐明的变量不会进步到实施上下文之上。

 

图片 1

image

图片 2

image

为了幸免那种情状,你须要运用块级别限制,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();

image

 

暂时死区

奇迹,使用let申明的变量会造成暂时死区。在以下代码中,let x=x+67
将抛出x未定义的不胜。

为此会冒出那些错误,是因为表明式(x +
67)求的是if块范围内一些变量x的值,而不是函数范围内部分变量x的值。运行方面的代码,你会得到这么一个不胜:

 

图片 3

image

你可以通过活动评释变量到表明式的地方一行来修补上述失实,如下所示:

块级范围界定是其余编程语言最重点的意义之一,并且随着ECMAScript
6中let语句的引入,JavaScript现在也有了那些意义。使用let语句,允许创立一个效率域在块范围内的变量。这足以缓解广大难点,例如全局范围变量的意想不到修改,闭包中的局地变量,以及支持编写更显明的代码。

在地点的代码中,大家选拔var语句评释变量x。因而,变量x的范围是函数范围。if语句内的变量x
就是if语句外成立的变量x
。因而,在您改改if语句块内变量x的值时,也会修改函数中变量x的持有引用的值。

如上代码获得的输出:

上面是上述代码的输出:

 

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的值。

与利用函数范围(或全局范围)注解的变量不同,使用let注明的变量是块范围的:它们只设有于它们定义的块中。

欢迎参加学习调换群569772982,我们一齐上学互换。

图片 4

在您往下了解let语句以前,我指出你先查看基于Infragistics jQuery库的Ignite
UI,它可以支持您更快地编写和运转Web应用程序。你可以运用JavaScript库的Ignite
UI来连忙化解HTML5,jQuery,Angular,React或ASP.NET
MVC中复杂的LOB需求。(你可以在这里下载Ignite
UI的免费试用版。)

行使let语句,允许你在JavaScript中创制块范围部分变量。let语句是在JavaScript的ECMAScript
6业内中引入的。

  • 大局范围
  • 函数范围
  • 词汇范围

在ECMAScript 6此前,JavaScript有二种档次的限制:

重新表明变量

您不能在同一个函数或块中运用let重新声飞鹤(Meadjohnson)个变量。那样做会油然则生语法错误。请看之下代码:

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

运转方面的代码会出来一个语法错误,如下所示:

 

图片 5

image

为了详细探索let语句,请细想上边的代码段:

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