使用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
答案 0 :(得分:3)
但是这种比较行为究竟是什么原因呢?
ECMAScript规范并非用于描述JavaScript 的工作原理,而是用来描述JavaScript 实际的工作方式。
该语言在Netscape Navigator中快速实现,并包含许多“错误”,然后在IE的实现中复制。最终,ECMAScript已经标准化,但直到JavaScript存在于野外。标准化已经使用的任何语言都需要一定程度的向后兼容性。
<=
和>=
与==
不同,只是因为the standard says so。标准是这样说的,因为这是最初实施的方式。