目录
var中有变量提升,还可以重复声明。
let中的特点
1.没有变量提升
2.是一个块级作用域(比如在for循环中)
3.不能重复声明
const的特点
除了具有上述let的特点之外,还有声明常量的作用,一旦被声明不可以被更改,如果一个对象声明为了常量,那么这个对象不可以被更改,但是常量内部的属性可以被更改。
const person={
name:'xiaoma'
}
//不能够这样
person = {
age:12
}
//但是可以修改对象内部的属性
person.name = 'alex'
作用一
const arr = []
for(var i = 0;i<10;i++){
arr[i]=function(){
return i;
}
console.log(arr[5]);
//最后输出10,因为var 有变量提升
但是如果var i=0改为let i=0,结果就正确,输出5
因为let没有变量提升而且是个块级作用域,相当于
{let i = 0}
{let i = 1}
{let i = 2}
{let i = 3}
{let i = 4}
...
{let i =10}
因为let在代码块中都有自己的作用域,所以在f