试图找出'如果'条件在js

时间:2013-07-04 04:25:52

标签: javascript

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

在chrome-&gt;控制台中,它显示:2

问题:

为什么if(1)=false

1 个答案:

答案 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();