-1
<script>
sayHi();
if (1) {
  function sayHi() {  console.log(1)  }
} else {
  function sayHi() {  console.log(2)  } 
}
</script> 

在 chrome->console 中,它显示:2

问题:

为什么if(1)=false

4

1 回答 1

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();
于 2013-07-04T04:29:01.430 回答