let、const和var的区别

94 阅读1分钟

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支持代码块作用域,所以在外面就不能访问他们