当前位置:  开发笔记 > 编程语言 > 正文

null和undefined不一致的比较

如何解决《null和undefined不一致的比较》经验,为你挑选了1个好方法。

我很想知道为什么

null == undefined

回来true但是

null >= undefined

回报 false

包含大于运算符的值是否会以不同方式强制执行?



1> voithos..:

TL;博士>=结束在这种情况下强迫两个参数为数字:undefined被强制转换成NaNnull被强制为0,这是不相等的.对于==,该规范明确定义null == undefinedtrue.


事实上,这些值在两种情况下都会被强制执行(从某种意义上说,至少==是这种情况).让我们在规范的帮助下一次考虑一个.

该算法的>=操作者使用"抽象关系比较算法",这是由其他关系运营商共享.根据规范中的描述,我们看到该算法执行以下操作:

    该参数元(其转化nullundefined已经是).

    检查参数是否为Strings(它们不是).

    如果它们不是Strings,则算法将参数转换为数字(参见步骤3.a.和3.b.)并执行与结果的比较.

最后一点是关键.从ToNumber表中,我们看到undefined被胁迫NaN,并且算法认为任何比较NaN都是假的(参见步骤3.c.和3.d.).因此,null >= undefinedfalse.


对于另一种情况,==故事实际上要简单得多:规范明确指出这null == undefined是"抽象平等比较算法"的一部分(参见步骤2和3).因此,null == undefinedtrue.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有