let、const和var的区别
1.var声明的变量存在变量提升,let和const没有变量提升
var a;
console.log(a);
a=2;//"unfined"
console.log(a);
let a=10;//直接报错:"ReferenceError: Cannot access 'a' before"
2.let和const声明的变量是一个块作用域
if(1===1){
let b=10;
}
console.log(b);//直接报错:" b is not defined",换成var的话结果是10
3.let和const不能重复声明变量
let a=1;
let a=2;
console.log(a);//"Identifier 'a' has already been declared"
注意:当const声明常量时,一旦被声明,无法修改;但如果是复合数据类型,可以修改属性
const person={
name:'jack'
}
person.name='tom';
console.log(person);//name: "tom"
let和const的作用(解决的问题)
作用1:for()循环
var arr=[];
for(let i=0;i<10;i++){
arr[i]=function(){
return i;
}
}
console.log(arr[5]());//10 使用var定义i时
console.log(arr[5]());//5 使用let定义i时
作用2.不会污染全局变量
//用let和cons声明:
let RegExp=10;
console.log(RegExp);//10
console.log(window.RegExp);//ƒ RegExp() { [native code] }
//用var声明时:
var RegExp=10;
console.log(RegExp);//10
console.log(window.RegExp);//10
小建议:默认用const,当你知道变量值需要修改时用let