Mi a “Falsy” a JavaScriptben?

Oct 28, 2019

A JavaScriptben egy érték akkor falsy, ha a JavaScript beépített típuskényszerítése false-re konvertálja. Vegyük például az alábbi if utasítást:

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

A console.log() csak akkor fog futni, ha v nem az alábbi értékek egyike:

  • false
  • 0
  • 0n: 0 mint BigInt
  • '': Üres karakterlánc
  • null
  • undefined
  • NaN

Ez a 7 érték az egyetlen hibás érték a JavaScriptben. Minden olyan érték, amely nem falsy, igaz.

Különösen egy nem-null objektum mindig igaz, még akkor is, ha a valueOf() függvénye falsy értéket ad vissza.

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

Recommendations

A truthy/falsy használata a if utasításokban lévő implicit típus kényszerítésekhez tipikusan rendetlen. Ritkán fordul elő olyan eset, hogy a 7 falsy érték pontosan az az értékkészlet, amire figyelni akarunk.

Tegyük fel például, hogy egy olyan függvényt implementálunk, amely ellenőrzi, hogy egy string rövidebb-e 25 karakternél.

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

A checkLength('') sajnos hibát fog dobni, mert az üres string falsy. Ehelyett azt kell ellenőriznie, hogy v egy karakterlánc-e:

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

Nullish Values

Az igaz/hibás értékek ellenőrzése helyett általában a “nullish” értékeket akarja ellenőrizni. A falsy ellenőrzések egyik gyakori felhasználási esete annak biztosítása, hogy ne kapjunk TypeError: Cannot read property 'prop' of null hibát, amikor hozzáférünk egy v értékű tulajdonsághoz.

Az v.prop-hoz való hozzáférés biztonságos, kivéve, ha v szigorúan egyenlő null vagy undefined értékkel. Még NaN.prop is rendben van.

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

Az ellenőrzés, hogy v == null egyenértékű-e v === null || v === undefined-vel.Más szóval, egy érték csak akkor egyenlő lazán null-val, ha szigorúan egyenlő null-val vagy undefined-vel. Tehát annak ellenőrzése, hogy v == null gyakran pontosabb, mint az igaz vagy hamis értékek ellenőrzése.

Még több alapvető oktatóanyag

  • Hogyan hasonlítsuk össze az objektumokat JavaScriptben
  • Hogyan ellenőrizzük, hogy egy JavaScript-változó nem definiált-e
  • A különbség let és a var között JavaScriptben
  • JavaScript karakterlánc-interpoláció
  • Globális változók JavaScriptben
  • Hogyan ellenőrizhetjük a `NaN`-t JavaScriptben
  • JavaScript Enums

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.