1、基本用法
ES6 新增了let和const命令
,用来声明变量。它的用法类似于var
,但是所声明的变量,只在let
命令所在的代码块内有效。
{
let a = 10;
var b = 1;
}
a // ReferenceError: a is not defined.
b // 1
而const
声明一个只读的常量。一旦声明,常量的值就不能改变。对于const
来说,只声明不赋值,就会报错。
const a = 3;
a // 3
a = 4;// TypeError: Assignment to constant variable.
const
的作用域与let
命令相同:只在声明所在的块级作用域内有效。
2、
不存在变量提升
var
命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined
。let
命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。const
命令声明的常量也是不提升,只能在声明的位置后面使用。
// var 的情况
console.log(foo); // 输出undefined
var foo = 2;
// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;
3、不允许重复声明
let
不允许在相同作用域内,重复声明同一个变量。const
声明的常量,也与let
一样不可重复声明。
// 报错
function func() {
let a = 10;
var a = 1;
}
// 报错
function func() {
let a = 10;
let a = 1;
}