let与const是ES6语法中比较常见的两个命令,下面我们就讨论一下let与const。
let
let是用来声明变量的命令,它类似于var命令,但不同于var的是let是块级作用域,而var是函数作用域。那么,什么是块级作用域呢,废话不多说,直接上代码。
for (let i =0;i<6;i++) {
console.log(i);//有结果
}
console.log(i);//报错
上面代码就是块级作用域的例子,我们在for循环里用let声明了i变量,在for循环内部打印i是有结果的,而在for循环外打印i是没有结果的。如果我们吧let变量换成var变量,两次打印是都会有结果的,感兴趣的小伙伴可以试试。
需要注意的是,let不可以在相同作用域里重复声明同一个变量,下面两个例子就会报错:
// 报错
function() {
let a = 1;
var a = 2;
}
// 报错
function() {
let a = 1;
let a = 2;
}
const
const也是声明常量的一个命令,常量一旦被声明,便不能被更改。例子如下:
const a = 1;
a = 2;
alert(a)//报错;
常量不能被更改也就意味着它不能被赋值,所以,在声明是就要给他赋值,如果只声明不赋值是会报错的。const与let一样,也是块级作用域。同时,const声明的常量也不可重复声明,例子如下:
var name = "abc";
let age = 10;
//下面两行会报错
const name= "efd";
const age = 15;