一、变量提升
console.log('姓名',name)
// 打印出: 姓名 小米
console.log('年龄',age)
// 报错:Uncaught ReferenceError: Cannot access 'age' before initialization
// 未捕获引用错误:无法在初始化之前访问“age”
var name = '小米'
let age = 18
二、变量覆盖
console.log('姓名',name)
// 打印出: 姓名 小明
var name = '小米'
var name = '小明'
let age = 18
let age = 28
// 报错:Uncaught SyntaxError: Identifier 'age' has already been declared
// 未捕获的语法错误:标识符“age”已声明
console.log('年龄',age);
三、没有块级作用域
for(var i=0;i<3;i++){
setTimeout(()=>{
console.log('num',i);
})
}
//打印:3 3 3
for(let i=0;i<3;i++){
setTimeout(()=>{
console.log('num',i);
})
}
//打印:0 1 2
for(var i=0;i<3;i++){
setTimeout(()=>{
})
}
console.log('num',i);
//打印:3
for(let i=0;i<3;i++){
setTimeout(()=>{
})
}
console.log('num',i);
//报错:Uncaught ReferenceError: i is not defined
//未捕获引用错误:未定义i