<script>
sayHi();
if (1) {
function sayHi() { console.log(1) }
} else {
function sayHi() { console.log(2) }
}
</script>
在chrome-&gt;控制台中,它显示:2
问题:
为什么if(1)=false
?
答案 0 :(得分:3)
在执行该条件时未定义这些函数定义。这两个函数在开头都被提升,而后者覆盖了前者。
if(1)
将始终评估为真。
这种提升正是使你能够在定义之前明显调用该功能的原因。以下代码将记录1
,但请注意,在这种情况下,您必须在条件之后调用它,否则您将收到错误undefined is not a function
。
if (1) {
var sayHi = function() { console.log(1) }
} else {
var sayHi = function() { console.log(2) }
}
sayHi();