ES6 中新增了 let 命令,能够用于申明变量。上面咱们就一起来看一下 let 命令的应用。

应用let申明变量

let 命令是 ES6 中新增的用于申明变量的一个命令,申明变量时的用法和 JavaScript 中的 var 相似。

示例:

例如上面咱们应用 let 命令来申明变量:

let a = 10;let b = 20;let c = 30;

let 申明的变量只在代码块内无效

let 命令的应用尽管和 var 相似,然而两者还是有区别的,例如应用 let 申明的变量,只在 let 所在的代码块内无效。这是什么意思呢,上面咱们通过一个例子来解说一下。

示例:

例如咱们在一段代码块中同时应用 letvar 来申明一个变量,而后在代码块外应用这个变量:

{    var a = 10;    let b = 20;}console.log(a); console.log(b);

当咱们咱们执行这段代码时,输入后果会报错,上面为谬误提醒:

ReferenceError: b is not defined

这个谬误通知咱们,变量 b 没有被申明,然而咱们明明在 {} 中申明了变量 b ,这示意 let 申明的变量只在它所在的代码块无效,在代码块外应用变量 b 会报错。

let不容许反复申明变量

let 命令和 var 命令还有一个不同就是,let 命令只能申明同一个变量一次,而 var 能够申明一个变量屡次。

示例:

例如咱们应用 var 申明变量 a 两次:

var a = 1;var a = 2;console.log(a);

执行代码后输入后果为 “2”,这示意当申明一个变量屡次时,前面会笼罩后面的。

接着咱们再试一下应用 let 申明变量 a 两次:

let a = 1;let a = 2;

当执行代码时会输入如下所示谬误提醒:

SyntaxError:Identifier 'a' has already been declared

其中 SyntaxError 示意这个一个语法错误,通知咱们变量 a 曾经被申明,不能再次被申明。

let不反对变量晋升

let 不存在变量晋升的景象,而 var 命令会变量晋升。变量晋升是什么意思呢,就是变量能够在申明之前应用,值为 undefined

示例:

例如咱们先应用变量 v,再通过 var 申明这个变量,执行代码后会输入 undefined

console.log(v);var v = 100;

而如果先应用变量 l,再通过 let 命令申明这个变量:

console.log(l);let l = 100;

当执行代码后会报错,报错内容如下所示:

ReferenceError: Cannot access 'l' before initialization

这示意通过 let 申明的变量,在被申明之前是不容许应用的,这就是说不存在变量晋升的景象。

暂时性死区

当一个块级作用域内存在 let 命令时,它所申明的变量就“绑定”(binding)了这个区域,不再受内部的影响。

示例:

例如上面这段代码:

var a = 10;  // 申明全局变量aif (true) {  a = 20;    let a;     // 在代码块中申明局部变量a,此时变量 a 绑定了这个代码块}

执行代码后会报如下所示:

ReferenceError: Cannot access 'a' before initialization

这段代码示意,如果咱们在一个代码块中应用 let 申明一个变量,那么就造成了关闭作用域,就造成了关闭作用域,既然在之前申明了全局变量也一样。

所以要留神,如果应用 let 命令在代码块内申明变量,那么在申明变量之前,该变量都是不可用的。这在语法上称为 “暂时性死区”。

链接:https://www.9xkd.com/