javascript-undefined == undefined为true。 但是undefined> = undefined是假的吗?

我只是有一个琐碎的问题。

为什么undefined返回undefined >= undefined,而undefined >= undefinedfalse

undefined等于undefined

但这不等于还是更大?

Tristyn Leos asked 2020-07-20T06:23:15Z
3个解决方案
46 votes

r运算符本质上是r运算符的否定。 两者都调用了抽象关系比较算法,该算法为步骤3(a至c)中定义的r返回未定义。 实际上,您还可以看到大于(或等于)和小于(或等于)运算符仅适用于数字或字符串。

然后,在r运算符的规范的6.步骤中,您会看到它为什么返回false的原因:

如果r是true或undefined,则返回false。 否则,返回true。

str answered 2020-07-20T06:23:40Z
8 votes

nullundefined,“大于或等于”中的OR与此OR NaN不同。

就比较而言,比较运算符(例如null等)用于数字,而undefined不是数字,未定义NaN

null时,您期望什么作为返回值? 当然为假,但是undefined返回NaN的原因是10为真,而"10"为假。 可以将“ 10”转换为数字,这样我们就可以看到在实际数字而不是数字字符串的情况下返回的结果。

没有null的严格相等运算符版本,而undefinedNaN

当您尝试比较nullundefinedNaN时,会发生一些非常奇怪和令人困惑的事情-这是JavaScript规范可能能够回答的问题,因为JavaScript是一种非常松散的类型化语言,并且类型非常灵活,因此人们可以 比较2974408045616616432131和"10",仍然会得到只有在大多数其他语言中比较两个整数时才可能获得的结果。

问题和讨论比直接下投更受欢迎。 谢谢。

Deepak Kamat answered 2020-07-20T06:24:23Z
2 votes

不等式运算符(<>等)不能用于比较无法隐式转换为数字的值。 其中包括undefined。您所看到的原因是,与其他语言不同,如果您尝试这样做就抛出错误(即python中的TypeError),JS可以帮助您做到这一点。 但是,结果将始终为假。

stybl answered 2020-07-20T06:24:43Z
translate from https://stackoverflow.com:/questions/46608435/undefined-undefined-is-true-but-undefined-undefined-is-false