False values in JS

B1

by Boban Stojanovski

JavaScript

//For example, these all evaluate to false.
console.log( null      ? true : false ); // false
console.log( 0         ? true : false ); // false
console.log( ""        ? true : false ); // false
console.log( false     ? true : false ); // false
console.log( NaN       ? true : false ); // false
console.log( undefined ? true : false ); // false

//using the not operator ! on these will evaluate true
console.log( !null      ); // true
console.log( !0         ); // true
console.log( !""        ); // true
console.log( !false     ); // true
console.log( !NaN       ); // true
console.log( !undefined ); // true

//But all the values are not equal to false
console.log( null == false      ); // false 
console.log( 0 == false         ); // true
console.log( "" == false        ); // true
console.log( false == false     ); // true
console.log( NaN == false       ); // false
console.log( undefined == false ); // false

//For null == false , problem here is type coercion ,typeof null is object and typeof false is boolean.
//There is no coercion under which objects of the null and boolean types can be equal, which is why this is false.
//For NaN == and == return false always even NaN == NaN is false, to check if a value is NaN use isNaN(value)
//For undefined it evaluates to false in boolean operations. Always use === when comparing to undefined.

//If we use === the results are more what you would expect , cause there is no type coercion
console.log( null === false      ); // false
console.log( 0 === false         ); // false
console.log( "" === false        ); // false
console.log( false === false     ); // true
console.log( NaN === false       ); // false
console.log( undefined === false ); // false