Chrome V8 中的 Javascript && 运算符行为

gee*_*079 1 javascript interpreter v8

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

和操作员

谢谢

Jcl*_*Jcl 5

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

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

由于012是八进制,您将得到10输出,这是八进制的以 10 为底的表示形式12

我找不到更好的来源链接,所以我将引用这个(它不是 V8 特定的,但应该这样做): https: //developer.mozilla.org/en-US/docs/Web/JavaScript/参考/运算符/逻辑运算符

逻辑与 (&&)

表达式1 && 表达式2

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

(粗体是我的)