Gelijkheid in JavaScript

Er zijn twee vergelijkingsoperatoren: == (los) en === (strict).

  • == kan types omzetten (type coercion)
  • === vergelijkt zonder omzetting

== — losse gelijkheid

Vergelijkt 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 gelijkheid

Vergelijkt 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
  

Valstrikken met ==


console.log("" == 0);       // true
console.log("0" == 0);      // true
console.log([] == 0);       // true
console.log([].toString()); // ""
  

Onverwachte waarheden door impliciete conversie.

Beste praktijk

  • Gebruik standaard === en !==.
  • Zet zelf types om als dat nodig is.

// Minder duidelijk
if (x == 0) { ... }

// Beter
if (Number(x) === 0) { ... }
  

Samenvatting

  • ==: alleen waarde, mét type-coercion → minder voorspelbaar
  • ===: waarde + type, géén coercion → aanbevolen

const veilig = (a, b) => a === b;