Javascript&& chrome的V8中的操作符行为

时间:2016-03-20 20:21:41

标签: javascript v8 interpreter

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

and operator

由于

2 个答案:

答案 0 :(得分:4)

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

因此,在这两种情况下,您都会在右侧获得表达式(因为012true都不能转换为false)。对于第一种情况,true,对于第二种情况,012

由于012是八进制,因此输出10,这是八进制12的基数10表示

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

  

逻辑AND(&&)

     

expr1&&表达式2

     

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

(大胆是我的)

答案 1 :(得分:2)

我解释&&||运算符的方式是这样的:

a && b = a ? b : a;

a || b = a ? a : b;