第一次的时候向上找到12 第二次的时候没有向上找吗?为什么报了undefined
var a=12
function b(){
console.log(a)
}
b() //12
var a=12
function b(){
console.log(a)
var a=6
}
b() //undefined
第一次的时候向上找到12 第二次的时候没有向上找吗?为什么报了undefined
var a=12
function b(){
console.log(a)
}
b() //12
var a=12
function b(){
console.log(a)
var a=6
}
b() //undefined
不是什么都往上找,如果当前作用域存在该变量就不会往上找了,第二个b相当于:
var a=12
function b(){
var a;
console.log(a)
a=6
}
b() //undefined
变量/函数声明是会提升的
对比下常考题
var a=12
function b(){
console.log(a)
let a=6
}
b() //let a不会存在变量提升;会抛异常
var a=12
function b(){
console.log(a)
var a=6
}
b() //会变量提升,未赋值则报undefined
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
变量提升