1. Let
let的特性:
- 没有预编译,没有变量声明提升;(TDZ: 暂时性死区)
- 在同一个作用域当中,不能够重复的定义变量;
- 在for循环当中,
(var i = 0; i < 10; i++)
是父级作用域,{}
当中是子集作用域
<script>
for(let i = 0; i<3; i++){
let i = 'abc';
console.log(i);
}
//输出结果为3个‘abc’
</script>
总结: 因为let的第三条特性,for循环分为父级作用域和子级作用域,所以可以重复的定义变量。
2. const
const的特性:
- 具备let的所有特性;
- const定义的变量,不可更改;
- const定义完变量,必须赋值,不能后赋值;
<script>
const a;
console.log(a);//报错,定义完变量没有赋值;
</script>
总结:
- 以后用let替代var;
- 定义的不变的量,用const,如:
const http = require('http');