gpt4 book ai didi

javascript - JavaScript 中逻辑表达式的短路评估

转载 作者:行者123 更新时间:2023-12-02 16:37:19 25 4
gpt4 key购买 nike

我正在学习 JavaScript 并阅读JavaScript:完整引用,2012 年第三版。考虑同一本书的摘要。

与许多语言一样,JavaScript 短路逻辑与 (&&)逻辑与 (&&) 的求值>逻辑 OR (||) 一旦解释器有足够的信息来推断结果。例如,如果 || 运算的第一个表达式为 true,则评估确实没有意义表达式的其余部分,因为无论其他值如何,整个表达式都将计算为 true。同样,如果 && 运算的第一个表达式的计算结果为 false,则无需继续计算右侧操作数,因为整个表达式始终为 false。这里的脚本演示了短路评估的效果:

    var x = 5, y = 10;

// The interpreter evaluates both expressions
if ( (x >>= 5) && (y++ == 10) )
document.write("The y++ subexpression evaluated so y is " + y);

// The first subexpression is false, so the y++ is never executed
if ( (x << 5) && (y++ == 11) )
alert("The if is false, so this isn't executed. ");

document.write("The value of y is still " + y);

我的O/P反射(reflect)为:

The value of y is still 10

而作者的如下:

The y++ subexpression evaluated so y is 11
The value of y is still 11

我发现这个表达式没有被执行:

if ( (x >>= 5)  &&  (y++ == 10) )

我在 Eclipse IDE 中看到上述表达式中第二个“&”下方绘制的红线:

The entity name must immediately follow the '&' in the entity reference.

这背后的原因是什么?

最佳答案

x 为 5,即二进制 101,因此 (x >>= 5) 为零,x 被赋值为零,并且第一条语句中的 y++ 不被执行。

(x << 5) 同样为零,因为 x 现在为零,因此第二条语句中的 y++ 也不会执行。 y 的值仍为 10,因为没有执行 y++。

我不知道你的作者从哪里得到 y == 11,这是错误的。

IDE 错误是一个转移注意力的错误 - 它不理解您的文件包含 javascript(或者您错误地分隔了 javascript),并尝试将其解析为 XML/HTML。

关于javascript - JavaScript 中逻辑表达式的短路评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27812974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com