【问题标题】:Javascript && operator behavior in chrome's V8 [duplicate]chrome V8中的Javascript &&运算符行为[重复]
【发布时间】:2016-07-07 06:06:23
【问题描述】:

在编写 javascript 解释器时,我需要实现一些基本功能。我在我的 Chrome 控制台中玩了一下,我在 js 中发现了这种奇怪的行为。在这种特殊情况下,我如何解释 js 在做什么?

谢谢

【问题讨论】:

    标签: javascript v8 interpreter


    【解决方案1】:

    Javascript 的&& 运算符如果可以转换为false,则返回左侧,否则返回右侧。

    所以在这两种情况下,您都得到了右边的表达式(因为012true 都不能转换为false)。对于第一种情况,true,对于第二种情况,012

    由于012 是八进制,您将得到10 输出,它是八进制12 的base-10 表示

    我找不到更好的来源链接,所以我会引用这个(不是 V8 特定的,但应该这样做):https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators

    逻辑与 (&&)

    expr1 && expr2

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

    (粗体是我的)

    【讨论】:

      【解决方案2】:

      我对@9​​87654321@ 和|| 运算符的理解是这样的:

      a && b = a ? b : a;
      
      a || b = a ? a : b;
      

      【讨论】:

        猜你喜欢
        • 2017-04-05
        • 2011-07-28
        • 2015-06-13
        • 2015-03-16
        • 1970-01-01
        • 2018-03-30
        • 2021-03-30
        • 2014-08-25
        • 2012-02-28
        相关资源
        最近更新 更多