什么|| 运营商呢?
Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;
什么|| 在这种情况下呢?
将_4添加到Attacklab.wmd_env.buttons的数组中?
||
如果该值不计算为false
,则返回左侧的值,否则返回右侧的值。
来自Mozilla的核心JavaScript 1.5参考 :
expr1 || expr2
如果可以转换为true,则返回expr1
; 否则,返回expr2
。 因此,当与布尔值一起使用时,||
如果任一操作数为真,则返回true; 如果两者都是错误的,则返回false。
因此,在这种情况下,如果Attacklab.wmd_env.buttons
没有值,则将值设置为_4
。
这是一个奇特的写作方式
if(!Attacklab.wmd_env.buttons) Attacklab.wmd_env.buttons = _4;
提供默认值很好。 请记住,不仅null
和undefined
将触发条件,而且还会触发0
, false
和''
,即在布尔上下文中被视为false
所有内容。
如果Attacklab.wmd_env.buttons
为null
或undefined
,它将被设置为默认值_4
。
|| 运算符检查expression式左侧提供的值是否为false(在布尔上下文中)。 如果是这样,则返回expression式右侧所示的替代值。 否则,它将返回原始值。
所以例如下面的代码将'Foo'设置为默认值,如果它是空的:
Foo = Foo || “默认值”
这有时称为合并操作员。 它支持其他语言,如Ruby和Perl。 C#有? 运算符做相同的事情。