2013-02-06 101 views
1

在我看到的一個文件中,我在javascript函數調用中看到||語句是什麼意思?'或'語句函數調用

createObject(a_variable || b_variable) 

該函數是否接受真/假值或其他東西?

是上述相當於

createanotherObject(a_variable ? a_variable : b_variable) 

我所看見的就在旁邊的代碼。

+0

這是[邏輯分離](http://en.wikipedia.org/wiki/Logical_disjunction)的一種形式 –

回答

4

是的。他們都做幾乎完全相同的事情(第一個是略微更有效率)。它會通過第一個真值(或最後一個 - 如果沒有真值)。

你的代碼是相同的:

var argument = a_variable; 

if (! argument) argument = b_variable; 

createObject(argument); 
+1

有趣我以爲這是一個邏輯運算,它將根據變量計算爲真或假。 – user1655072

+1

@ user1655072 - 某些語言(如PHP)就是這樣工作的。在JavaScript中,[第一個真值將被返回](http://jsfiddle.net/XcZ8U/)(或最後一個)。 –

1

它會通過的a_variable的值,如果a_variable是truethy,否則它會通過的b_variable值。

var a = false, b = "FOOBAR"; 
console.log(a || b); // FOOBAR 
0

它相當於你的第二個例子。 || (或)條件一旦一個術語評估爲「真值」就結束。如果a_variable爲空,它將使用b_variable。

1

是的,它們是一樣的。它是一個短路運算符,即如果第一個爲真,則不評估第二個變量。這就像

a = b || c; 

if b is truthy 
    a = b 
else 
    a = c 

注:人們忘了,但0也是一個虛假價值。

+0

...或最後... –