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的主要内容,如果未能解决你的问题,请参考以下文章