var 具有变量提升,let const 不具有 // 1. var 具有变量提升,let const 不具有 console.log(a) // undefined console.log(b) // 报错 console.log(c) // 报错 var a = 10 let b = 10 const c = 10 var可以重复声明变量,let和const不可以 // 2. var可以重复声明变量,let和const不可以 var num = 10 var num =100 let num1 = 1000 let num1 = 100000 // error const num2 = 100 const num2 =1000 // error var具有函数作用域,let const 具有块级作用域({}包围的范围) // 3. var具有函数作用域,let const 具有块级作用域({}包围的范围) if (true) { var a1 = 10 let a2 = 10 const a3 = 10 } console.log(a1) console.log(a2) // error console.log(a3) // error let var 声明的变量内存地址可以变化并且不需要初始化; const 声明的变量内存地址不可以变化并且声明的时候需要初始化 //4. let var 声明的变量内存地址可以变化并且不需要初始化 // const 声明的变量内存地址不可以变化并且声明的时候需要初始化 let b1=10 var b2 = 10 b1=100 b2=1000 console.log(b1,b2) // 100 1000 const count // error const b3=1000 b3=1 // error