undefined == undefined是真的.但undefined> = undefined是假的?

Tri*_*eos 44 javascript undefined

我只是有一个小问题.

为什么undefined == undefined返回true,但是undefined >= undefinedfalse

undefined等于undefined.

但它不等于或更大?

str*_*str 46

>=运营商基本上是的否定<操作.并且两者都调用抽象关系比较算法,该算法返回未定义,undefined >= undefined如步骤3(a到c)中所定义.实际上,您还可以看到大于( - 或等于)和小于( - 或等于)的运算符仅用于处理数字或字符串.

然后在>=运算符规范的6.步骤中,您可以看到它返回false的原因:

如果rtrue未定义,则返回false.否则,返回true.


Dee*_*mat 8

undefined === undefined || undefined > undefined并且undefined >= undefined,"大于或等于"的OR与该OR不同||.

就其而言,像>, <, >=数字这样的比较运算符是指数字而undefined不是数字,undefined是未定义的.

您期望什么作为返回值10 >= "Hello World"?当然,一个假的,但再次10 >= "10"返回true,因为10 == "10"是真实的,10 === "10"是假的."10"可以转换为数字,因此我们可以看到在实际数字的情况下返回的结果,而不是带数字的字符串.

没有全等运算符版本>=,而不是!=它是!==

当您尝试比较一些很奇怪和困惑的事情发生null,undefined,NaN这是值得的JavaScript的规范可能能够回答并因为JavaScript是一种非常松散类型的语言和类型是非常灵活的,这就是为什么一个可以比较- 10"10"和仍然得到你在大多数其他语言中比较两个整数时可能得到的结果.

问题和讨论比直接投票更受欢迎.谢谢.


sty*_*ybl 2

不等运算符(<>等)不能用于比较无法隐式转换为数字的值。这包括undefined。你所看到的背后的原因是,与其他语言不同,如果你尝试做这样的事情(即TypeError在 python 中),其他语言会抛出错误,JS 允许你这样做。然而,结果总是错误的。

  • 实际上,当使用不等式时,字符串是按字典顺序比较的(/sf/answers/496148201/)。 (8认同)