gpt4 book ai didi

javascript - 为什么 Javascript 不遵循关于 Infinity/NaN 比较的 ECMA 规范?

转载 作者:行者123 更新时间:2023-12-01 15:52:39 25 4
gpt4 key购买 nike

我已经在 Chrome、Firefox、Safari 中进行了测试。在这些比较中,它们都给出了相同的结果。

  • 0 < NaN返回 false .
  • Infinity < Infinity返回 false .
  • -Infinity < -Infinity返回 false .

虽然根据 Abstract Relational Comparison algorithm ,在 4h 和 4i 步骤中,上述表达式应返回 undefined , true , true .

我在这里错过了什么?

enter image description here

最佳答案

lval < rval ,评估时,does :

  1. Let r be the result of performing Abstract Relational Comparison lval < rval.
  2. ReturnIfAbrupt(r).
  3. If r is undefined, return false. Otherwise, return r.

虽然“抽象关系比较”(ARC) 可能会返回 undefined ,评估的最终结果<运算符始终为 truefalse .

数字与其他数字的实际比较见 6.1.6.1.12 Number::lessThan ( x, y ) ;看看 ARC 怎么说:

f. If Type(nx) is the same as Type(ny), return Type(nx)::lessThan(nx, ny).

因此,ARC 中步骤 F 以下的内容与您正在检查的这些表达式无关,因为在每个表达式中,您都在将一个数字与另一个数字进行比较。


0 < NaN完成 lessThan 的第 2 步:

If y is NaN, return undefined.

导致 ARC 返回 undefined , 最终值为 false : 如果 r 未定义,则返回 false。.

Infinity < Infinity首先完成第 6 步,即:

If x is +∞, return false.

-Infinity < -Infinity首先完成第 8 步,即:

If y is -∞, return false.

关于javascript - 为什么 Javascript 不遵循关于 Infinity/NaN 比较的 ECMA 规范?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63862855/

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