在操作 中,Null 和 undefined 都会被强制转换为 false null==undefined
。那么为什么在 或 操作中它们也不会被强制转换为 falsenull==false
呢undefined==false
?
let undefinedEqualsFalse = undefined == false;
let nullEqualsFalse = null == false;
let nullEqualsUndefined = null == undefined;
console.log('undefinedEqualsFalse', undefinedEqualsFalse);
console.log('nullEqualsFalse', nullEqualsFalse);
console.log('nullEqualsUndefined', nullEqualsUndefined);
输出:
undefinedEqualsFalse false
nullEqualsFalse false
nullEqualsUndefined true
== 运算符遵循特定的类型强制规则。在 JavaScript 中,null 和 undefined 按照特殊定义彼此相等,但它们不等于 false,因为与布尔值的比较涉及先将布尔值转换为数字(false 变为 0),而 null 和 undefined 都不等于 0。