2015-09-22 83 views
0

我明白|| b返回一個對象,而不是布爾值。我只是不知道爲什麼javascript給出了不同的結果爲javascript ||運算符根據命令給出不同的結果

undefined || "" (result is "") 
"" || undefined (result is undefined) 

我認爲這兩個應該返回「」。 有人可以解釋給我嗎?謝謝!

更新:@Quentin明確回答,「」評估爲false,如果a和b都評估爲false,則|| b將返回b。

+2

你在準確地檢查什麼?你能提供一個更多的上下文的代碼片段嗎? – depperm

+1

僅供參考:JavaScript的'||'操作符不會返回給您一個布爾值。這可能是你困惑的原因。 –

+0

你是對的,我很困惑:)好趕上! – AlliceSmash

回答

5

||運算符測試表達式左側的真實性。如果LHS是真實值,則返回LHS,否則返回RHS。

你可以看到這是如何與if的一個實際的例子結合:

if (a || b) 
  • 如果a是真實的,那麼它是一樣的if (a)這是if (true)
  • 如果a是假的,b是真的,那麼if (b)if (true)
  • 如果ab都是假的,那麼它是if (b)這是if (false)

如果你的榜樣,無論""也不undefined是真實的值,所以你的兩個測試都會返回RHS。

3

JavaScript的邏輯OR運算符||,returns one of its operands。在a || b中,如果a爲真,則返回a,否則返回b

你的兩個參數的計算結果都是false。因此在undefined || ""中,它返回""。對於"" || undefined,它返回undefined。在這兩種情況下,這是因爲這就是b的位置。

1

該||運算符返回評估爲true的第一個參數。如果所有的參數都是假的,那麼它只是返回最後一個參數,不管它是什麼。

相關問題