Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;
什么?在这种情况下做?
将_4添加到Attacklab.wmd_env.buttons的数组中?||是什么运营商呢?
Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;
什么?在这种情况下做?
将_4添加到Attacklab.wmd_env.buttons的数组中?||是什么运营商呢?
JavaScript中的||
运算符将返回左侧的值,前提是该值不计算为false
,否则返回右侧的值。
从Mozilla's Core JavaScript 1.5 Reference:
expr1 || expr2
返回expr1
,如果它可以被转化为true;否则,返回expr2
。因此,如果使用布尔值,则||
如果任一操作数为true,则返回true;如果两者都是假的,则返回false。
因此,在这种情况下,如果Attacklab.wmd_env.buttons
不具有价值,它将该值设置为_4
。
奇怪的是,MDC使用相当含糊的“返回expr1,如果它**可以转换为真”。它不是真的关于“能够被转换”,而是关于哪个值表达式返回。 – kangax 2009-10-11 07:28:57
如果Attacklab.wmd_env.buttons
是null
或undefined
,它将被设置为默认值_4
。
这是写
if(!Attacklab.wmd_env.buttons)
Attacklab.wmd_env.buttons = _4;
它提供的默认值漂亮的一个奇特的方式。请记住,不仅null
和undefined
将触发条件,而且还会触发0
,false
和''
,即在布尔上下文中被视为false
的所有内容。
+1用于明确列出什么值评估为false – 2009-05-06 20:35:05
该||运算符检查表达式左侧提供的值是否为假(在布尔上下文中)。如果是这样,它将返回表达式右侧所示的替代值。否则,它会返回原始值。
因此,例如,下面的代码将设置“富”到一个默认值,如果它是空:
Foo = Foo || "Default Value"
这有时被称为合并运算符。 它支持其他语言,如Ruby和Perl。 C#有?运算符执行相同的操作。
请修正题目。 – rkb 2009-05-06 16:56:18
哇,花了7次尝试才得到正确的标题... – Pool 2009-05-06 17:06:49