var 是 ES5 语法
const let 是 ES6 语法
var 有变量提升
var 和 let 定义的是变量,可重新对其赋值;const 定义的是常量,不可对其重新赋值。
let const 有块级作用域,var 没有
var a = 100
console.log(a) // 100
console.log(a) // undefined
var a = 100
// 为何没报错?ES5的规则,执行一段代码时,会先查找有没有var定义的变量,有的话会提前声明出来。即变量提升
// 上面的代码相当于下面的代码
var a
console.log(a)
a = 100
let b = 100
console.log(b) // 100
console.log(b)
let b = 100
//报错
for(var i = 0;i < 10; i++){
var j = i +1
}
console.log(i,j) // 10 10
for(let i = 0;i < 10; i++){
let j = i + 1
}
console.log(i,j)
// 报错,因为 i和j 是块级作用域里面的