1 回答
TA贡献1865条经验 获得超7个赞
以下内容均摘自《你不知道的javascript(中卷)》
null 和 undefined 之间的 ==涉及隐式转换,在x=y中,ES5 规范 11.9.3.2-3 规定:
如果 x 为 null, y 为 undefined,则结果为 true。
如果 x 为 undefined, y 为 null,则结果为 true。
在 == 中 null 和 undefined 相等(它们也与其自身相等),除此之外其他值都不存在这种
情况,例如:
var a = null;
var b;
a == b; // true
a == null; // true
b == null; // true
a == false; // false
b == false; // false
a == ""; // false
b == ""; // false
a == 0; // false
b == 0; // false
null 和 undefined 之间的强制类型转换是安全可靠的,上例中除 null 和 undefined 以外的
其他值均无法得到假阳( false positive)结果。个人认为通过这种方式将 null 和 undefined
作为等价值来处理比较好。
例如:
var a = doSomething();
if (a == null) {
// ..
}
条件判断 a == null 仅在 doSomething() 返回非 null 和 undefined 时才成立,除此之外其
他值都不成立,包括 0、 false 和 "" 这样的假值。
添加回答
举报