În JavaScript, o valoare este falsă dacă coerciția de tip încorporată de JavaScript o convertește în false
. De exemplu,luați în considerare instrucțiunea if
de mai jos:
if (v) { console.log('v is not falsy');}
Expresia console.log()
se va executa numai dacă v
nu este una dintre valorile de mai jos:
false
0
-
0n
: 0 as a BigInt -
''
: Empty string null
undefined
NaN
Aceste 7 valori sunt singurele valori false în JavaScript. Orice valoare care nu este falsă este veridică.
În special, un obiect non-null este întotdeauna truey, chiar dacă funcția sa valueOf()
returnează o valoare falsy.
function isFalsy(v) { return !v;}// `false`. The object form of `0` is truthy, even though 0 is falsy.isFalsy(new Number(0));
Recomandări
Utilizarea truthy/falsy pentru constrângerile implicite de tip în declarațiile if
este în mod obișnuit dezordonată. Este rar să găsiți un caz în care cele 7 valori falsy sunt exact setul de valori pe care doriți să le căutați.
De exemplu, să presupunem că implementați o funcție care verifică dacă un șir de caractere este mai scurt de 25 de caractere.
function checkLength(v) { if (!v) { throw new Error('Must provide a string!'); } return v.length < 25;}
Din păcate, checkLength('')
va arunca o eroare pentru că șirul gol estefalsy. În schimb, ar trebui să verificați dacă v
este un șir de caractere:
function checkLength(v) { if (typeof v !== 'string') { throw new Error('Must provide a string!'); } return v.length < 25;}
Valoare nulă
În loc să verificați dacă valorile sunt adevărate/falsificate, de obicei doriți să verificați dacă există valori „nule”. Unul dintre cazurile obișnuite de utilizare a verificărilor false este acela de a vă asigura că nu obțineți o eroare TypeError: Cannot read property 'prop' of null
atunci când accesați o proprietate cu o valoare v
.
Este sigur să accesați v.prop
dacă v
nu este strict egal cu null
sau undefined
. Chiar și NaN.prop
este în regulă.
const x = Number('abc');x; // NaNx.prop; // undefined
Verificarea dacă v == null
este echivalentă cu v === null || v === undefined
.Cu alte cuvinte, o valoare este vag egală cu null
numai dacă este strict egală cu null
sau undefined
. Așadar, verificarea dacă v == null
este adesea mai precisă decât verificarea valorilor veridice sau false.
Mai multe tutoriale fundamentale
- Cum se compară obiectele în JavaScript
- Cum se verifică dacă o variabilă JavaScript este nedefinită
- Diferența dintre let și var în JavaScript
- Global Variables in JavaScript
- How to Check for `NaN` in JavaScript
- JavaScript Enums
JavaScript String Interpolation
.