ES6中的let和const

Posted better2019

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6中的let和const相关的知识,希望对你有一定的参考价值。

在ES6之前,我们的JS声明变量都用的是var声明,var a = 1;  var b = ‘China‘这种。

但是在ES6中,增加了两个声明变量的关键字let和const,下面来具体介绍一下:

                                                 1,let命令:

用let声明的变量,有效域是有限的,这个变量只能在他所在的代码块中被访问。

比如 let a = 1;  这个a在他所在的代码块内能活下去,出去这个代码块他就死了。

代码块是什么呢?我能理解的就是,直接用{}会被解释为代码块而不是对象, 这个是javascript这个语言本身决定的特性。

//代码块

{

let a = 10;

var b = 10;

}

//代码块之外

console.log(a);//Uncaught ReferenceError: a is not defined

console.log(b);//10

这就证明了let的作用,生命的变量只在他所在的代码块内有效(只能活在代码块内)

块级作用域:

这里提到了代码块,不由得想起了块级作用域这个东西,之前学过,JS是没有块级作用域的,我们可以通过创建立即执行匿名函数(IIFE)模拟块级作用域。但是有了let,实际上为JS新增了块级作用域。

1 //块级作用域写法:
  function
f1(){ 2 3 let n = 5; 4 if(true){ 5 let n = 10; 6 } 7 console.log(n); // 5 8 9 }
10 //IIFE写法
11 ( function() { var n = 5; ...; ...; } () )

外层代码块,是不会受到内层代码块的影响的。

                                                  2,const命令

  const是用来声明常量的,一旦声明,其值就不能改变。

const a = 100;
var b = 100;

a++; b++;

console.log(a);  //100
console.log(b);  //101

a = 1000; //对常量赋值,不会报错,但是会默默地失败
(补充:参考自阮一峰《ECMAScript6入门》,但我试了一下应该也是会报错的,错误信息为:Uncaught TypeError: Assignment to constant variable.)

!!const 和 let 相同的地方

1,只在声明所在的块级作用域内有效

2,const 和 let 都不能 重复声明,会报错的,像下面这样

const a = 100;

const a = 200;  //重复声明会报错

let  b = 100;

let b = 200;     //重复声明会报错

(参考自《ECMAScript6入门》阮一峰著)

 

以上是关于ES6中的let和const的主要内容,如果未能解决你的问题,请参考以下文章

ES6中的let和const命令

ES6中的let和const

ES6中的let和const

ES6中的let和const

详解ES6中的 let 和const

let和const在es6中的异同点