一、定义变量
(一)let
1.作用域:块级作用域{};
2.不存在变量提升,只能先声明再使用,否则会报错;
在代码块内,声明变量之前,该变量不可用。此代码块内称为“暂时性死区”
<script>
//ES5中声明变量会提升
console.log(a); //undefined
var a = 666;
//ES6中声明变量不会提升
console.log(b); //报错 在代码块内,在声明变量b之前,该变量b都是不可用的 所以报错
let b = 1;
</script>
3.ES6不允许重复声明变量(has declare);
4.声明可以不赋值
(二)const
1.作用域:块级作用域{};
2.不存在变量提升,只能先声明再使用,否则会报错;
3.ES6不允许重复声明变量;
4.const 声明一个只读常量,不可以重新赋值
(注意点:如果 const 声明的是一个对象,对象所包含的成员值是可以被修改的。抽象一点儿说,就是对象所指向的地址不能改变,而变量成员 是可以修改的。)
const obj = {}; //对象是一块存储空间,
obj.age = 20; //存储空间没变,修改其成员,并不改变存储空间的地址
console.log(obj);
5.const声明常量时必须赋值;