【问题标题】:What is the meaning of || in javascript?||是什么意思在javascript中?
【发布时间】:2015-05-07 17:59:25
【问题描述】:

我正在查看here的这些代码行:

    if (callback)
        callback(sig || graph);

我从未在 javascript 方法调用中看到垂直的“或”条。他们的意思是什么?他们是否传递“真实”参数(即 sig 或图形)?他们是否传递了定义的参数?我以前从未见过这种语法。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    这是 JS(和大多数其他语言)中的逻辑 OR 运算符。它是defined in the spec at 11.11。如规范中所述,将首先评估任一侧的表达式,逻辑 OR 为left-to-right associative。请注意,操作数的评估遵循标准ToBoolean semantics from section 9.2,因此[null, undefined, 0, ''] 都算作假。

    与大多数语言不同,JS 如果为真则返回左操作数,否则返回右操作数。这种行为has been covered before 在许多 SO 问题中,但值得注意的是,因为大多数语言只是返回 true 或 false。此行为通常用于 provide default values 以其他方式未定义的变量。

    【讨论】:

    • 如果两者都是假的,它不会返回false;它返回右侧的值,无论它可能是什么(所以,0 可能,或"")。
    • @Pointy 我的错误,已修复。
    • "与大多数语言不同,JS 如果为真则返回左操作数,否则返回右操作数。"有点宽泛。这种方法在具有“真实性”概念的脚本语言中相当普遍,例如Python 和 Perl。甚至 Ruby 也有这种行为,尽管它没有那么有用(因为 Ruby 中的几乎所有内容都是真实的,所以必须将左侧强制转换为布尔值以进行测试,这意味着这仅适用于默认 false 或 nil到另一个值,而不是来自任意“虚假”对象,如 0 值、空序列等)。
    【解决方案2】:

    Logical OR operator (||) 是一个运算符,它返回其第一个或第二个操作数,具体取决于第一个操作数是否为真。 “真实”值表示除 0、undefined、null、"" 或 false 之外的任何值。

    此运算符使用短路,这意味着如果第一个表达式为真,则不计算第二个表达式并立即返回第一个操作数。这类似于Logical AND operator (&&),它的作用相反:如果第一个操作数为假,则返回它,否则返回第二个表达式。

    【讨论】:

    • 有人能解释一下我的答案有什么问题,以便我改进吗?
    • 逻辑运算符并不总是返回布尔值。
    【解决方案3】:

    意思是'或' (http://www.w3schools.com/js/js_comparisons.asp) 所以如果(sig OR graph)

    小心您可以使用它“短路”您的代码。 示例:

    If (foo || foo2)
    

    如果 foo 为真,那么 JavaScript 甚至根本不会测试 foo2,它只是跳过它。

    【讨论】:

      【解决方案4】:

      它通过任何一个计算结果为真,或者sig如果两者都为真。

      【讨论】:

        【解决方案5】:

        双管道(||)在JS中代表OR。简而言之,这个或那个是True。它需要任何一方为真才能获得True 结果。

        例如:

        变量 x = 8;

        var y = 'c';

        x >= 8 || y === 'a'

        双管道的左侧返回True,右侧是False。因此,结果是True。

        【讨论】:

          【解决方案6】:

          运算符 ||表示或。

          如果 sig 或 graph 为真或非空变量,回调函数将接收一个真参数。

          【讨论】:

          • 这不是 JavaScript 的工作方式,但对于某些其他语言(如 Java)来说确实如此。
          • 我的错误。如果参数不是布尔值,回调函数将接受第一个非空(或未定义)参数。
          猜你喜欢
          • 2017-06-11
          • 2015-07-15
          • 2018-07-17
          • 1970-01-01
          • 2011-04-16
          • 2011-06-20
          • 2017-03-02
          • 2013-02-14
          • 1970-01-01
          相关资源
          最近更新 更多