为什么If语句为hashTable返回undefined?

Kai*_* Li 2 javascript algorithm hashtable data-structures

有人能解释这个JavaScript的怪癖吗?

一个例子:

function func(hashTable) {
  if (hashTable['foo'])
    return true;
}

var hash = {};
hash['foo'] = 0;
func(hash);
Run Code Online (Sandbox Code Playgroud)

我得到undefined而不是true.

Mih*_*nut 5

那是因为你returned是一个覆盖情况的函数(何时hastTable['foo']为真).

hashTable['foo']0if(0)被解释为,false并且您没有为此案例返回值.

JavaScript中,不仅仅是JavaScript,我们拥有所谓的falsy 价值观.这些分别是:0,null,undefined,false,"",NaN.