如果我们将alert(null==undefined)
输出到true
。为什么null == undefined在javascript中为true
这是什么逻辑原因。
这是硬编码在JavaScript中的东西还是有这个解释。
如果我们将alert(null==undefined)
输出到true
。为什么null == undefined在javascript中为true
这是什么逻辑原因。
这是硬编码在JavaScript中的东西还是有这个解释。
语言规范explicitly says:
如果x为空,y是不确定的,返回true
我不知道的解释推理的语言设计过程中的任何记录该决定,但==
有处理不同类型的规则,“空”和“未定义”都是“无”意思,所以让它们相等是很直观的。
(如果您不想键入小提琴,请使用===
代替)。
使用双等号运算符强制Javascript执行类型强制。
换句话说,当你做x == y
,如果x
和y
是同一类型的不,JavaScript的一个值转换为另一个比较之前,就像如果字符串和数字进行比较,字符串总是被铸造成数然后进行比较
由于这个原因,JavaScript中混合类型的许多比较可能导致可能意外或违反直觉的结果。
如果您想在JavaScript中进行比较,通常使用三重平等运算符===
而不是双等号更好。这不是一种类型的强制;相反,如果类型不同,则返回false。这通常是你需要的。
如果您完全肯定您需要,您只能使用双等号。
这应该是最好的答案。很好的解释! –
==
比较运算符不检查类型。 null
和undefined
都返回false
。这就是为什么你的代码实际上检查是否false
等于false
。
> null == undefined;
< true
> false == false
< true
但是它们的类型并不相同。
> typeof undefined;
< "undefined"
> typeof null;
< "object"
正因为如此,下面的语句将返回false,因为===
比较操作检查两种类型及其价值。
> undefined === null;
< false
烨......你能给我一些材料,它说什么的原因,并不仅仅是它等于:P – Nav
我会说,因为不确定意味着什么aswel,如果你的DIV不有一个ID,它是未定义的,或者我们可以说,不存在,空,无效。 –
你可以请解释如何==实际上运行时,它归结为比较undefined和null – Nav