1

在我正在查看的文件中,我看到||javascript 函数调用中的语句是什么意思?

createObject(a_variable || b_variable)

该函数是采用真/假值还是采用其他值?

上面的代码是否等同于

createanotherObject(a_variable ? a_variable : b_variable)

我在它旁边看到的。

4

4 回答 4

4

是的。他们都做几乎完全相同的事情(第一个效率更高一些)。它将传递第一个真实值(或最后一个 - 如果没有真实值)。

您的代码等效于:

var argument = a_variable;

if ( ! argument ) argument = b_variable;

createObject( argument );
于 2013-02-06T20:06:20.243 回答
1

它将传递a_variableif的值a_variable是 truethy,否则它将传递 的值b_variable

var a = false, b = "FOOBAR";
console.log(a || b); // FOOBAR
于 2013-02-06T20:07:27.937 回答
1

是的,它们是一样的。这是一个短路运算符,即如果第一个变量为真,则不评估第二个变量。就像是

a = b || c;

if b is truthy
  a = b
else
  a = c

注意:人们忘记了,但 0 也是一个假值。

于 2013-02-06T20:07:35.393 回答
0

它相当于你的第二个例子。|| (或)一旦其中一项评估为“真实”值,条件就会结束。如果 a_variable 为空,它将使用 b_variable。

于 2013-02-06T20:07:30.320 回答