Er zijn twee vergelijkingsoperatoren: == (los) en === (strict).
== kan types omzetten (type coercion)=== vergelijkt zonder omzetting== — losse gelijkheidVergelijkt waarden, zet types automatisch om.
console.log(5 == "5"); // true
console.log(0 == false); // true
console.log(null == undefined); // true
Let op: kan tot verrassingen leiden.
=== — strikte gelijkheidVergelijkt waarde én type, geen type-conversie.
console.log(5 === "5"); // false
console.log(0 === false); // false
console.log(null === undefined); // false
console.log(5 === 5); // true
==
console.log("" == 0); // true
console.log("0" == 0); // true
console.log([] == 0); // true
console.log([].toString()); // ""
Onverwachte waarheden door impliciete conversie.
=== en !==.
// Minder duidelijk
if (x == 0) { ... }
// Beter
if (Number(x) === 0) { ... }
==: alleen waarde, mét type-coercion → minder voorspelbaar===: waarde + type, géén coercion → aanbevolen
const veilig = (a, b) => a === b;