Loose equality has a special clause: undefined == null is true, but neither is coerced to any other type. So undefined == 0 is false (no number conversion happens), and null == false is also false because false would coerce to 0 yet null is never compared as a number. Nullish values match only each other under ==.