1. var定义的变量可以被重复声明,let不能。
// var定义变量
var v = 1;
var v = 100;
console.log(v); //100
// let 定义的变量
let m = 200;
let m = 600;
consloe.log(m); //Uncaught SyntaxError: Identifier 'm' has already been declared
2. 在非严格模式下的全局作用域。
解释:在非严格模式下,通过var定义的变量会在全局作用域下绑定到window对象上,通过let定义的变量则不会。
3. 变量的提升和暂时性死区。
解释:var和let定义的变量都会存在变量的提升,let定义变量的时候会存在一个暂时性死区,因为let未执行完所有语句之前,所有未定义的变量都是不可用的。
4. 作用域概念。
解释:var定义的变量只有函数作用域和全局作用域的概念,let会多出一个块级作用域。