|| 有什么作用 运营商做什么?

IT技术 javascript operators
2021-02-28 02:36:00
Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;

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

4个回答

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

来自Mozilla 的 Core JavaScript 1.5 参考

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

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

奇怪的是,MDC 使用了相当模糊的“如果可以转换为 true,则返回 expr1 ”。这并不是关于“能够被转换”,而是关于返回哪个值表达式。
2021-04-28 02:36:00

这是一种奇特的写作方式

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

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

@kangax:是的,这是列表中唯一缺少的内容(参见 ECMA-262,第 9.2 节)
2021-05-09 02:36:00

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

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

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

Foo = Foo || “默认值” 

这有时称为合并运算符。Ruby 和 Perl 等其他语言也支持它。C# 有 ?? 做同样事情的运营商。

好点,我可能应该发表评论。无论如何,我的答案已经更新。
2021-04-17 02:36:00
所以,有了这个答案,他知道它叫什么,其他语言使用它,甚至 C# 中的不同语法......但他仍然不知道它的作用。
2021-05-01 02:36:00
+1为正确的名字!似乎没有其他 SO 问题/答案想要给出那个......帮助我找到了 Xquery 中的等价物(它让 $foo := ($foo, "default value")[1] 对于任何好奇的人)。
2021-05-07 02:36:00