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