let和const使用
es5有两个作用域,全局,函数作用域
es6增加了一个块作用域
es6强制开启了严格模式(“use strict”),变量未声明。不能引用,否则会报引用错误
let和var声明变量都可以的, 比如
for(var i = 0;i<3;i++){
console.log(i);
}
console.log(i);
// 这个的结果是 0,1,2,3 var声明的变量在for循环中没有块级作用域的概念,所以是全局变量
//又比如
for(let i = 0;i<3;i++){
console.log(i);
}
console.log(i);
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
使用let关键字声明变量,for循环的大括号形成了块级作用域,该语句的执行会报错,外边的console.lo(i)这个i是访问不到的,报引用错误,在本例子中,i没有声明,不是应该报undefined么,为什么是reference引用错误呢,因为es6强制开启了严格模式,变量未声明。不能引用,否则会报引用错误
let a = 1;let a = 2; 不能重复定义,否则会报错
const 定义常量,声明的时候必须赋值,不能修改,声明的常量是只读,也有块作用域
如果我们声明的常量是一个对象,对象是不可以重新定义的,但是我们可以为那个对象添加属性并赋值,保证对象内存中的地址不变就是可以对对象修改的
