Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;
什么是||在这种情况下呢?
将_4添加到Attacklab.wmd_env.buttons?
答案 0 :(得分:19)
如果该值未评估为||
,则JavaScript中的false
运算符会返回左侧的值,否则返回右侧的值。
来自Mozilla's Core JavaScript 1.5 Reference:
expr1 || expr2
如果可以转换为true,则返回expr1
;否则,返回expr2
。因此,当与布尔值一起使用时,如果任一操作数为真,则||
返回true;如果两者都为假,则返回false。
因此,在这种情况下,如果Attacklab.wmd_env.buttons
没有值,则会将值设置为_4
。
答案 1 :(得分:12)
这是一种奇特的写作方式
if(!Attacklab.wmd_env.buttons)
Attacklab.wmd_env.buttons = _4;
提供默认值非常好。请注意,null
和undefined
不仅会触发条件,还会触发0
,false
和''
,即所有被视为{{1}在布尔上下文中。
答案 2 :(得分:8)
如果Attacklab.wmd_env.buttons
为null
或undefined
,则会将其设置为默认值_4
。
答案 3 :(得分:4)
|| operator检查表达式左侧提供的值是否为false(在布尔上下文中)。如果是,则返回表达式右侧指示的备用值。否则返回原始值。
因此,例如,以下代码将'Foo'设置为默认值,如果它为null:
Foo = Foo || "Default Value"
这有时称为Coalescing运算符。 它支持其他语言,如Ruby和Perl。 C#有??操作员做同样的事情。