1. var 可以声明提升 let不能声明提升
var 可以声明提升,但是很少这样写
console.log(name)
var name="张三" //打印出 张三
2. var 没有局部作用域 let有局部作用域
let在作用域内,正常打印
function btn() {
for (var i = 0; i < 5; i++) {
console.log(i)
}
}
btn() //打印出 0 1 2 3 4
function btn() {
for (let i = 0; i < 5; i++) {
console.log(i)
}
}
btn() //打印出 0 1 2 3 4
var 不在作用域内,可以正常打印
function btn() {
for (var i = 0; i < 5; i++) {
}
console.log(i) //仍然可以打印i,打印结果是5
}
btn()
let不在作用域内打印会报错 声明的let只在for循环里使用,所以for循环用let声明
function btn() {
for (let i = 0; i < 5; i++) {
}
console.log(i) //报错
}
btn()
3. 声明覆盖
var let="张三"
var let="李四"
console.log(let) //打印出 李四
var name="张三"
var name="李四"
console.log(name) //打印出 李四
总结
var 无块级作用域,存在变量覆盖,可以声明提前。
let 有块级作用域,存在变量覆盖,不能声明提前。
let是es6里的语法,所以学习过es6以后,可以把 var 换成 let
本文含有隐藏内容,请 开通VIP 后查看