特点:
let
- let声明变量没有变量提升
console.log(a);//Uncaught ReferenceError: Cannot access 'a' before initialization
let a = 10;
console.log(a);
- 是一个块级作用域
if(1===1){
let b = 10;
}
console.log(b);//Uncaught ReferenceError: b is not defined
- 不能重复声明
let c = 10;
let c = 11;
console.log(c)//Uncaught SyntaxError: Identifier 'c' has already been declared
const
const 声明常量 一旦被声明 无法修改,符合let的特点(没有变量提升,也是块级作用域,不能重复声明)
const max = 30;
console.log(max)//30
max = 40;
console.log(max)//Uncaught TypeError: Assignment to constant variable.
-----------------------------------
const person ={
name:'小玉米'
}
// 可以这样修改
person.name = "高考";
// 不能这样修改
console.log(person)//{name: "高考"}
person ={
name:'1212'
}
// Uncaught TypeError: Assignment to constant variable
作用1 : for循环是个经典的例子
var arr =[];
for(var i = 0; i< 10;i++){
arr[i] = function(){
return i ;
}
}
console.log(arr[5]())//10
var arr =[];
for(let i = 0; i< 10;i++){
arr[i] = function(){
return i ;
}
}
console.log(arr[5]())//5
作用2 : 不会污染全局变量
let RegExp = 10;
console.log(RegExp)// 10
console.log(window.RegExp)// RegExp() { [native code] }
建议
在默认情况下用const,而只有在你知道变量值需要被修改的情况建议使用let
网友评论