javascript - 等于但不大于或等于?

标签 javascript boolean

undefined 比较任何东西已被讨论过很多次,但今天我不得不比较数组中的项目,在某些时候,数组中的项目可能是 undefined 和我很好奇他们将如何相互比较。我发现 undefined == undefinedtrue,但同时 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/

相关文章:

javascript - 有没有办法在同一来源上发出 XMLHttpRequest 时不发送 cookie?

javascript - 渲染 displaySIngleElement 组件 onClick react

asp.net - ajax 是否破坏了我的 javascript 对象?

php - 在 php 中将 1/0 值转换为 YES/NO

C# ASP.NET 在 ASP.NET 中使用代码隐藏的 boolean 变量

java - 使用 boolean 值的参数

javascript - append 和 addClass 动画失败

javascript - 以 blob 作为源播放音频时出现 DOMException

c++ - 通过 bool flag c++ 显示多个错误

java - 如何检查一个日期期间是否与另一个日期期间重叠