Boolesissa kontekstissa (if, &&, ||, !) jokainen arvo käsitellään joko tai . Epätotuusarvoisia arvoja on tarkalleen — kaikki muu on totuusarvoinen.
Boolesissa kontekstissa (if, &&, ||, !) jokainen arvo käsitellään joko tai . Epätotuusarvoisia arvoja on tarkalleen — kaikki muu on totuusarvoinen.
Epätotuusarvoiset arvot: false, 0, -0, 0n (BigInt nolla), "" (tyhjä string), null, undefined, NaN.
if ("") {} // skipped — empty string is falsy
if (0) {} // skipped
if ("0") {} // RUNS — non-empty string is truthy!
if ([]) {} // RUNS — empty array is truthy!
if ({}) {} // RUNS — empty object is truthy!
Yllätyksiksi: "0", [] ja {} ovat kaikki totuusarvoisia, vaikka ne näyttävät "tyhjiltä".
const name = input || "guest"; // ❌ if input is "" or 0, falls back to "guest"
const count = input ?? 0; // ✅ ?? only falls back on null/undefined
|| palautuu fallbackiin mille tahansa epätotuusarvoiselle arvolle, joten kelvollinen 0 tai "" korvataan. Operaattori nullish coalescing ?? palautuu fallbackiin vain arvoille null/undefined, mikä on yleensä se, mitä haluat.
Tarkan epätotuusarvoisten arvojen joukon tunteminen estää subtiilit virheet — erityisesti lukujen suojaus (if (count > 0) eikä if (count)) ja valinnan ?? vs || välillä oletusarvoille.
Kirjasto IT-haastattelukysymyksiä yksityiskohtaisine vastauksineen — Juniorista Senioriin.
Lahjoita