乐趣区

关于es6:ES6使用let命令声明变量

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;  // 申明全局变量 a

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

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

ReferenceError: Cannot access 'a' before initialization

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

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

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

退出移动版