【问题标题】:What does the || operator do?|| 是什么意思运营商呢?
【发布时间】:2010-10-24 06:09:20
【问题描述】:
Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;

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

【问题讨论】:

标签: javascript operators


【解决方案1】:

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

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

富 = 富 || “默认值”

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

【讨论】:

  • 所以,有了这个答案,他知道它叫什么,其他语言使用它,甚至 C# 中的不同语法......他仍然不知道它的作用。
  • 好点,我可能应该留下评论。不管怎样,我的答案已经更新了。
  • +1 表示正确的名称!似乎没有其他 SO 问题/答案想要给出这个......帮助我在 Xquery 中找到了等价物(它让 $foo := ($foo, "default value")[1] 对于任何好奇的人)。
【解决方案2】:

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

来自Mozilla's Core JavaScript 1.5 Reference

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

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

【讨论】:

  • 奇怪的是,MDC 使用了相当模糊的“如果 可以转换为 true,则返回 expr1”。这实际上不是关于“能否被转换”,而是关于返回的值表达式。
【解决方案3】:

这是一种奇特的写作方式

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

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

【讨论】:

  • @kangax:是的,这是列表中唯一缺少的东西(参见 ECMA-262,第 9.2 节)
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 2018-01-11
    • 2013-07-15
    • 2016-04-01
    相关资源
    最近更新 更多