The expression null == undefined evaluates to true. When using the loose equality operator (==), JavaScript performs type coercion, and null and undefined are considered equal to each other (but not to any other value). However, null === undefined is false because they have different types. NaN is never equal to anything, including itself, so NaN === NaN is false. And while 0 === -0 is true (which might be surprising), they're considered the same value in JavaScript despite having different representations.