【发布时间】:2013-12-17 19:22:28
【问题描述】:
用undefined比较任何东西已经讨论过很多次了,但是今天我不得不比较数组中的项目,在某些时候,数组中的项目可能是undefined,我很好奇它们将如何相互比较.我发现undefined == undefined 是true,但同时undefined >= undefined 不是true。等一下,如果某事是相等的,那么大于或等于也意味着是真的?这就是逻辑的运作方式!
我可以接受 ECMA 标准所说的任何内容,我相信这些人是理智的,并且有充分的理由做任何事情。但是到底什么可能是这种比较行为的原因呢?如果我正在实现undefined,我将返回undefined,用于以undefined 作为操作数的任何比较。但是他们选择返回boolean,那为什么结果是这样的呢?
现在我认为最好的解决方案是使用多个if 语句以特殊方式处理undefined 的任何外观。
undefined === undefined: true
undefined == undefined: true
undefined !== undefined: false
undefined != undefined: false
undefined < undefined: false
undefined > undefined: false
undefined <= undefined: false
undefined >= undefined: false
【问题讨论】:
-
ECMA 标准描述并标准化了 JavaScript 这种古怪语言的现有行为。
-
有趣...奇怪的是
null >= null返回true。 -
我想我们需要知道这些比较是如何实现的:) +1,有兴趣。
-
如果您打算使用
==而不是===和其他进行类型转换的比较,那么您必须能够理解所有各种类型转换是如何工作的,这是公平的复杂。 -
两个
undefined的比较是否意味着类型转换?它们被转换成什么类型?
标签: javascript boolean