我在学习 JavaScript 的函数提升( hoisting )时,遇到了三个看似相似但输出不同的例子。根据函数提升的原理,这三个例子的输出应该是相同的,越想越觉得奇怪啊
例子 1
var a = 0;
console.log("1 a:", a);
if(true){
a = 1;
function a() {}
a = 5;
console.log("2 a:", a);
}
console.log("3 a:", a);
经过验证,输出结果为:
1 a: 0
2 a: 5
3 a: 1
例子 2
var a = 0;
console.log("1 a:", a);
if(true){
a = 1;
a = 5;
console.log("2 a:", a);
function a() {}
}
console.log("3 a:", a);
经过验证,输出结果为:
1 a: 0
2 a: 5
3 a: 5
例子 3
var a = 0;
console.log("1 a:", a);
if(true){
function a() {}
a = 1;
a = 5;
console.log("2 a:", a);
}
console.log("3 a:", a);
经过验证,输出结果为:
1 a: 0
2 a: 5
3 a: f a() {}
问题
[ol]
[/ol]