用 undefined
比较任何东西已被讨论过很多次,但今天我不得不比较数组中的项目,在某些时候,数组中的项目可能是 undefined
和我很好奇他们将如何相互比较。我发现 undefined == undefined
是 true
,但同时 undefined >= undefined
不是 true
.等一下,如果某物相等,那么大于或等于也意味着为真?这就是逻辑的运作方式!
我可以接受 ECMA 标准所说的任何事情,我相信那些人是理智的,并且对一切都有充分的理由。但是到底是什么原因导致了这种比较行为呢?如果我正在实现 undefined
,我会为任何以 undefined
作为操作数的比较返回 undefined
。但是他们选择返回boolean
,那为什么结果是这样呢?
现在我认为最好的解决方案是以特殊方式处理任何出现的 undefined
和多个 if
语句。
undefined === undefined: true
undefined == undefined: true
undefined !== undefined: false
undefined != undefined: false
undefined < undefined: false
undefined > undefined: false
undefined <= undefined: false
undefined >= undefined: false
最佳答案
But what on earth could be the reason for this comparison behavior?
ECMAScript规范的编写不是为了描述 JavaScript 应该 的工作方式,而是为了描述 JavaScript 实际上 的工作方式。
该语言在 Netscape Navigator 中迅速实现,并包含许多诸如此类的“错误”,然后在 IE 的实现中复制了这些错误。最终,ECMAScript 被标准化,但直到 JavaScript 广泛存在之后。标准化任何已在使用的语言都需要一定程度的向后兼容性。
<=
和 >=
不同于==
仅仅因为the standard says so .该标准之所以如此,是因为它们最初是这样实现的。
关于javascript - 等于但不大于或等于?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20322302/