在我看到的一個文件中,我在javascript函數調用中看到||
語句是什麼意思?'或'語句函數調用
createObject(a_variable || b_variable)
該函數是否接受真/假值或其他東西?
是上述相當於
createanotherObject(a_variable ? a_variable : b_variable)
我所看見的就在旁邊的代碼。
在我看到的一個文件中,我在javascript函數調用中看到||
語句是什麼意思?'或'語句函數調用
createObject(a_variable || b_variable)
該函數是否接受真/假值或其他東西?
是上述相當於
createanotherObject(a_variable ? a_variable : b_variable)
我所看見的就在旁邊的代碼。
是的。他們都做幾乎完全相同的事情(第一個是略微更有效率)。它會通過第一個真值(或最後一個 - 如果沒有真值)。
你的代碼是相同的:
var argument = a_variable;
if (! argument) argument = b_variable;
createObject(argument);
有趣我以爲這是一個邏輯運算,它將根據變量計算爲真或假。 – user1655072
@ user1655072 - 某些語言(如PHP)就是這樣工作的。在JavaScript中,[第一個真值將被返回](http://jsfiddle.net/XcZ8U/)(或最後一個)。 –
它會通過的a_variable
的值,如果a_variable
是truethy,否則它會通過的b_variable
值。
var a = false, b = "FOOBAR";
console.log(a || b); // FOOBAR
它相當於你的第二個例子。 || (或)條件一旦一個術語評估爲「真值」就結束。如果a_variable爲空,它將使用b_variable。
是的,它們是一樣的。它是一個短路運算符,即如果第一個爲真,則不評估第二個變量。這就像
a = b || c;
if b is truthy
a = b
else
a = c
注:人們忘了,但0也是一個虛假價值。
...或最後... –
這是[邏輯分離](http://en.wikipedia.org/wiki/Logical_disjunction)的一種形式 –