double vs triple equal

Prev Top Next
assertTripleEqual(1 == 1, true);
assertTripleEqual(1 === 1, true);

assertTripleEqual('foo' == 'foo', true);
assertTripleEqual('foo' === 'foo', true);

assertTripleEqual(null == undefined, true, "double-equals coerces types to match");
assertTripleEqual(null === undefined, false, "triple-equals does strict type checking");

assertTripleEqual({} == {}, false);
assertTripleEqual({} === {}, false);
// Why?