null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。
null==undefined//true,== 表示相等 (值相等)
null===undefined//false,===表示恒等(类型和值都要相等)
null转数值为0,undefined转数值为NaN
到这里恍然一看,突然发现有点不对劲,==是与用于判断值相等,现在null转换数值为0,undefined转化数值为NaN,这两个值也不相等啊,怎么就返回true了呢,
通过看资料才发现原来在Javascript规范中:js在比较相等性之前,不能将 null 和 undefined 转换成其他任何值,并且规定null 和 undefined 是相等的。因为null 和 undefined都代表着无效的值。
本文揭示了JavaScript中null和undefined在比较时的特殊性:尽管它们在转化为数值时不同(null转0,undefined转NaN),但在相等性判断中被规定为相等。深入解析了这种设计背后的规范原因。
488

被折叠的 条评论
为什么被折叠?



