javascript-undefined == undefined为true。 但是undefined> = undefined是假的吗?
我只是有一个琐碎的问题。
为什么undefined
返回undefined >= undefined
,而undefined >= undefined
是false
?
undefined
等于undefined
。
但这不等于还是更大?
r
运算符本质上是r
运算符的否定。 两者都调用了抽象关系比较算法,该算法为步骤3(a至c)中定义的r
返回未定义。 实际上,您还可以看到大于(或等于)和小于(或等于)运算符仅适用于数字或字符串。
然后,在r
运算符的规范的6.步骤中,您会看到它为什么返回false的原因:
如果
r
是true或undefined,则返回false。 否则,返回true。
null
和undefined
,“大于或等于”中的OR与此OR NaN
不同。
就比较而言,比较运算符(例如null
等)用于数字,而undefined
不是数字,未定义NaN
。
null
时,您期望什么作为返回值? 当然为假,但是undefined
返回NaN
的原因是10
为真,而"10"
为假。 可以将“ 10”转换为数字,这样我们就可以看到在实际数字而不是数字字符串的情况下返回的结果。
没有null
的严格相等运算符版本,而undefined
是NaN
当您尝试比较null
、undefined
、NaN
时,会发生一些非常奇怪和令人困惑的事情-这是JavaScript规范可能能够回答的问题,因为JavaScript是一种非常松散的类型化语言,并且类型非常灵活,因此人们可以 比较2974408045616616432131和"10"
,仍然会得到只有在大多数其他语言中比较两个整数时才可能获得的结果。
问题和讨论比直接下投更受欢迎。 谢谢。
不等式运算符(<
、>
等)不能用于比较无法隐式转换为数字的值。 其中包括undefined
。您所看到的原因是,与其他语言不同,如果您尝试这样做就抛出错误(即python中的TypeError
),JS可以帮助您做到这一点。 但是,结果将始终为假。