undefined == 0 返回 false,因 undefined 只与 null 宽松相等;undefined === 0 为 false,因类型不同;关系运算符中 undefined 转为 NaN,故比较结果均为 false。

JavaScript 中 undefined 和 0 的比较结果取决于使用的运算符,核心在于类型转换规则是否触发、如何转换,以及比较逻辑本身。
使用 ==(宽松相等)时:undefined == 0 返回 false
虽然 undefined == null 是 true,但 undefined 与任何非 null 值(包括 0、false、空字符串)的宽松相等比较都返回 false。
- 规范规定:
undefined只与null相等(在==下),不参与其他数值或布尔转换链 -
undefined == 0不会把undefined转成NaN再比,而是直接按“特殊值互斥规则”判定为 false - 同理:
undefined == false、undefined == ""全是 false
使用 ===(严格相等)时:undefined === 0 明确为 false
类型不同(undefined 是原始类型,0 是 number),值也不同,所以直接返回 false,无争议。
使用 >、=、
这类关系运算符会尝试将操作数转为数字再比较:
立即学习“Java免费学习笔记(深入)”;
-
Number(undefined)结果是NaN - 任何涉及
NaN的关系比较(如NaN > 0、NaN )一律返回 <strong>false</strong> - 因此:
undefined > 0、undefined 、<code>undefined >= 0、undefined 全是 <strong>false</strong>
其他常见场景补充
这些不是直接比较,但容易混淆:
-
undefined - 0→NaN(减法强制转数字,undefined变NaN) -
undefined + 0→"undefined0"(加法优先字符串拼接,undefined转字符串"undefined") -
if (undefined)或!undefined→false(因为undefined是 falsy 值) -
0 == false是 true,但undefined == false是 false——不能类推


















