Wat is “Falsy” in JavaScript?

Oct 28, 2019

In JavaScript is een waarde falsy als JavaScript’s ingebouwde type coercion het converteert naar false. Neem bijvoorbeeld het onderstaande if statement:

if (v) { console.log('v is not falsy');}

De console.log() zal alleen worden uitgevoerd als v niet een van de onderstaande waarden is:

  • false
  • 0
  • 0n: 0 als een BigInt
  • '': Lege string
  • null
  • undefined
  • NaN

Deze 7 waarden zijn de enige falsy waarden in JavaScript. Elke waarde die niet falsy is, is truthy.

In het bijzonder, een niet-null object is altijd truthy, zelfs als zijn valueOf() functie een falsy waarde retourneert.

function isFalsy(v) { return !v;}// `false`. The object form of `0` is truthy, even though 0 is falsy.isFalsy(new Number(0));

Aanbevelingen

Het gebruik van truthy/falsy voor impliciete type coercions in if statements is typisch rommelig. Het komt zelden voor dat de 7 falsy waarden precies de set waarden zijn waar u op wilt letten.

Voorbeeld, stel dat u een functie implementeert die controleert of een string korter is dan 25 tekens.

function checkLength(v) { if (!v) { throw new Error('Must provide a string!'); } return v.length < 25;}

Helaas zal checkLength('') een fout geven omdat lege string falsy is. In plaats daarvan moet u controleren of v een string is:

function checkLength(v) { if (typeof v !== 'string') { throw new Error('Must provide a string!'); } return v.length < 25;}

Nullish Values

In plaats van te controleren op truthy/falsy waarden, wilt u meestal controleren op “nullish” waarden. Een van de veel voorkomende gevallen voor falsy controles is ervoor te zorgen dat u geen TypeError: Cannot read property 'prop' of null-fout krijgt bij het benaderen van een eigenschap met een waarde v.

Het is veilig om v.prop te benaderen, tenzij v strikt gelijk is aan null of undefined. Zelfs NaN.prop is prima.

const x = Number('abc');x; // NaNx.prop; // undefined

Controleren of v == null gelijk is aan v === null || v === undefined.Met andere woorden, een waarde is alleen losjes gelijk aan null als deze strikt gelijk is aan null of undefined. Dus controleren of v == null is vaak nauwkeuriger dan controleren op truthy of falsy waarden.

Meer Fundamentele tutorials

  • Hoe Objecten te vergelijken in JavaScript
  • Hoe te controleren of een JavaScript Variabele ongedefinieerd is
  • Het verschil tussen let en var in JavaScript
  • JavaScript String Interpolation
  • Globale Variabelen in JavaScript
  • Hoe te controleren op `NaN` in JavaScript
  • JavaScript Enums

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.