我在学习 JavaScript 的函数提升( hoisting )时,遇到了三个看似相似但输出不同的例子。根据函数提升的原理,这三个例子的输出应该是相同的,越想越觉得奇怪啊
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
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
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() {}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.