7
Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;

|| 是什么 在这种情况下怎么办?
将 _4 添加到 Attacklab.wmd_env.buttons 的数组中?

4

4 回答 4

21

JavaScript 中的||运算符返回左边的值,如果该值不计算为false,否则返回右边的值。

来自Mozilla 的核心 JavaScript 1.5 参考

expr1 || expr2
返回expr1是否可以转换为 true;否则,返回expr2。因此,当与布尔值一起使用时,||如果任一操作数为真,则返回真;如果两者都为假,则返回假。

因此,在这种情况下,如果Attacklab.wmd_env.buttons没有值,它会将值设置为_4.

于 2009-05-06T16:57:09.797 回答
12

这是一种奇特的写作方式

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

提供默认值很好。请记住,不仅nullundefined会触发条件,而且0,false'',即false在布尔上下文中考虑的所有内容。

于 2009-05-06T17:01:37.010 回答
8

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

于 2009-05-06T16:57:02.717 回答
4

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

因此,例如,如果 'Foo' 为空,则以下代码会将其设置为默认值:

富 = 富 || “默认值” 

这有时称为 Coalescing 运算符。Ruby 和 Perl 等其他语言也支持它。C# 有 ?? 做同样事情的操作员。

于 2009-05-06T17:04:03.417 回答