平等但不大于或等于?

时间:2013-12-02 06:42:46

标签: 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

1 个答案:

答案 0 :(得分:3)

  

但是这种比较行为究竟是什么原因呢?

ECMAScript规范并非用于描述JavaScript 的工作原理,而是用来描述JavaScript 实际的工作方式。

该语言在Netscape Navigator中快速实现,并包含许多“错误”,然后在IE的实现中复制。最终,ECMAScript已经标准化,但直到JavaScript存在于野外。标准化已经使用的任何语言都需要一定程度的向后兼容性。

<=>===不同,只是因为the standard says so。标准是这样说的,因为这是最初实施的方式。