Why does null==undefined but null!=false and undefined!=false

Why does null==undefined but null!=false and undefined!=false

Null and undefined are each coerced to false in the operation null==undefined. So why aren't they also coerced to false in the operations null==false or 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);

output:

undefinedEqualsFalse false
nullEqualsFalse false
nullEqualsUndefined true

Answer

The == operator follows specific type coercion rules. null and undefined are equal to each other by special definition in JavaScript, but they don't equal false because comparison with booleans involves converting the boolean to a number first (false becomes 0), and neither null nor undefined equal 0.

Enjoyed this article?

Check out more content on our blog or follow us on social media.

Browse more articles