ES6
中新增了 let
命令,能够用于申明变量。上面咱们就一起来看一下 let
命令的应用。
应用 let 申明变量
let
命令是 ES6
中新增的用于申明变量的一个命令,申明变量时的用法和 JavaScript 中的 var
相似。
示例:
例如上面咱们应用 let
命令来申明变量:
let a = 10;
let b = 20;
let c = 30;
let 申明的变量只在代码块内无效
let
命令的应用尽管和 var
相似,然而两者还是有区别的,例如应用 let
申明的变量,只在 let
所在的代码块内无效。这是什么意思呢,上面咱们通过一个例子来解说一下。
示例:
例如咱们在一段代码块中同时应用 let
和 var
来申明一个变量,而后在代码块外应用这个变量:
{
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; // 申明全局变量 a
if (true) {
a = 20;
let a; // 在代码块中申明局部变量 a,此时变量 a 绑定了这个代码块
}
执行代码后会报如下所示:
ReferenceError: Cannot access 'a' before initialization
这段代码示意,如果咱们在一个代码块中应用 let
申明一个变量,那么就造成了关闭作用域,就造成了关闭作用域,既然在之前申明了全局变量也一样。
所以要留神,如果应用 let
命令在代码块内申明变量,那么在申明变量之前,该变量都是不可用的。这在语法上称为“暂时性死区”。
链接:https://www.9xkd.com/