null // false 谁-6ren">
gpt4 book ai didi

javascript - 将 String 与 JavaScript 中的空值进行比较

转载 作者:行者123 更新时间:2023-11-29 22:02:51 25 4
gpt4 key购买 nike

我正在将值 null 与字符串进行比较。然而,比较的结果始终是 false

null > "a" // false

null < "a" // false

"a" > null // false

"a" > null // false

谁能解释为什么会这样?

我确实在 ECMAScript 标准中找到了一个部分 ( http://www.ecma-international.org/ecma-262/5.1/#sec-11.8.5 ),它似乎解释了正在发生的事情,但我并不真正理解该标准所说的内容。

最佳答案

11.8.5 是抽象的关系表达式,production relational expression是你需要看的,包括抽象的。

11.8.1 The Less-than Operator ( < ) // pretty much the same as >

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 因为Number('a') => NaN (Rule 3) 这将触发这些规则:如果 nx 是 NaN,返回 undefined如果 ny 是 NaN,返回 undefined

因此 6) 令 r 为执行抽象关系比较的结果,在您的情况下 r 则未定义。最后一步说如果 r 未定义则返回 false,因此您的答案。

关于javascript - 将 String 与 JavaScript 中的空值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22641331/

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