2009-05-06 127 views
6
Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4; 

什么?在这种情况下做?
将_4添加到Attacklab.wmd_env.buttons的数组中?||是什么运营商呢?

+4

请修正题目。 – rkb 2009-05-06 16:56:18

+4

哇,花了7次尝试才得到正确的标题... – Pool 2009-05-06 17:06:49

回答

18

JavaScript中的||运算符将返回左侧的值,前提是该值不计算为false,否则返回右侧的值。

Mozilla's Core JavaScript 1.5 Reference

expr1 || expr2
返回expr1,如果它可以被转化为true;否则,返回expr2。因此,如果使用布尔值,则||如果任一操作数为true,则返回true;如果两者都是假的,则返回false。

因此,在这种情况下,如果Attacklab.wmd_env.buttons不具有价值,它将该值设置为_4

+0

奇怪的是,MDC使用相当含糊的“返回expr1,如果它**可以转换为真”。它不是真的关于“能够被转换”,而是关于哪个值表达式返回。 – kangax 2009-10-11 07:28:57

8

如果Attacklab.wmd_env.buttonsnullundefined,它将被设置为默认值_4

12

这是写

if(!Attacklab.wmd_env.buttons) 
    Attacklab.wmd_env.buttons = _4; 

它提供的默认值漂亮的一个奇特的方式。请记住,不仅nullundefined将触发条件,而且还会触发0,false'',即在布尔上下文中被视为false的所有内容。

+0

+1用于明确列出什么值评估为false – 2009-05-06 20:35:05

4

该||运算符检查表达式左侧提供的值是否为假(在布尔上下文中)。如果是这样,它将返回表达式右侧所示的替代值。否则,它会返回原始值。

因此,例如,下面的代码将设置“富”到一个默认值,如果它是空:

 
Foo = Foo || "Default Value" 

这有时被称为合并运算符。 它支持其他语言,如Ruby和Perl。 C#有?运算符执行相同的操作。