一: 变量提升与否
var:
console.log(a); // undefined
var a = 'abc';
// 这段代码实际执行顺序是: var a; //变量声明提升至当前作用域顶部
console.log(a);
a = 'abc';
let:
console.log(a); // 报错: a is not defined
let a = 'abc'; // 这里, 用let声明变量, 变量声明不会提升, 完全按照文档流的执行顺序走
二:作用域问题
var:
for (var i = 0; i<10; i++) {
// code..
}
console.log(i); // 输出 10
let:
for (let i = 0; i<10; i++) {
// code..
}
console.log(i); // 报错: i is not defined // let 作用于 代码块 {}
获取更过 点击这里