gpt4 book ai didi

javascript - 为什么 JavaScript 中 (1 < NaN) 为假?

转载 作者:行者123 更新时间:2023-12-02 23:44:03 24 4
gpt4 key购买 nike

为什么(1 < NaN)回馈false而不是undefined (在 JavaScript 中)?

在“11.8.5 抽象关系比较算法”中,它说如果其中一个值是 NaN(在 ToPrimitive 和 ToNumber 之后,在我看来,这不应该影响 NaN),结果是 undefined

在 FF 和 Chrome 中我得到:

console.log(1 < NaN);
// false

这是为什么?

最佳答案

因为 <运算符返回 false当抽象关系算法返回undefined时。请参阅Section 11.8.1 :

11.8.1 The Less-than Operator ( < )

The production RelationalExpression : RelationalExpression < ShiftExpression is evaluated as follows:

  1. Let lref be the result of evaluating RelationalExpression.
  2. Let lval be GetValue(lref).
  3. Let rref be the result of evaluating ShiftExpression.
  4. Let rval be GetValue(rref).
  5. Let r be the result of performing abstract relational comparison lval < rval. (see 11.8.5)
  6. If r is undefined, return false. Otherwise, return r.

所有关系运算符都是如此。 算法有一个 undefined结果,但运算符(operator)将其转换为 false 。这是有道理的。 1 不是 < NaN (也不是 > NaN== NaN 或...:-))。

(很高兴看到人们阅读规范。)

关于javascript - 为什么 JavaScript 中 (1 < NaN) 为假?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6676945/

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