let和const是es6的语法
他们的区别:
1. var会变量提升,let和const没有变量提升
console.log("a",a) //会输出undefined
var a = 5;
console.log("b", b) //会报错
let b = 2
console.log("c", c) //会报错
const c = 100
var声明的变量,可以在声明之前使用,这时候值会是undefined
let和const声明的变量,在声明之前使用会报错
2.var声明的变量能重复定义,let和const不能
var a = 5;
var a = 6;
console.log(a)
以上代码,第二次定义a,会覆盖前面的a,所以输出是6
let b = 100
let b = 200
以上代码直接报错
const c = 500
const c = 600
以上代码也直接报错
3. var不支持块作用域,let和const支持
{
var a = 5
let b = 5
let c = 6
}
console.log(a)//正常输出5
console.log(b)//报错
console.log(c)//报错
以上代码中,在代码块内,var定义的变量a不支持块作用域,所有在代码块外能正常访问,b和c支持代码块作用域,所以在外面就不能访问他们