JavaScript are 2 tipuri de tipuri: primitive (siruri de caractere, booleene, numere, simboluri) și obiecte. obiectele sunt structuri complexe de date. Cel mai simplu obiect în JavaScript este simplu obiect — o colecție de chei și valorile asociate:
let myObject = { name: 'Eric Cartman'};
Dar există situații când un obiect nu poate fi creat. Pentru astfel de cazuri, JavaScript oferă o valoare specială null
— care indică un obiect lipsă.,
let myObject = null;
În acest post, veți afla totul despre null
în JavaScript: sensul său, cum să-l detecteze, diferența între null
și undefined
, și de ce folosind null
pe scară largă creează codul de întreținere dificultăți.
1. Conceptul de null
JavaScript caietul de sarcini spune despre null
:
null
este o primitivă valoare care reprezintă intenționată lipsa de orice obiect de valoare.,
Dacă vedeți null
(fie atribuit unei variabile sau returnate de o funcție), atunci, în acel loc ar fi fost un obiect, dar pentru un motiv oarecare, un obiect nu a fost creat.
De exemplu, funcția greetObject()
creează obiecte, dar, de asemenea, pot reveni null
atunci când un obiect nu poate fi creat:
cu toate Acestea, atunci când se invocă funcția fără argumente — greetObject()
— funcția returnează null
., Returnarea null
este rezonabilă deoarece parametrul who
nu are valoare, iar obiectul de salut nu poate fi creat.
1.1 analogia din lumea reală a null
gândindu-vă la o analogie din lumea reală, vă puteți imagina o variabilă ca fiind o cutie. La fel cum o variabilă poate ține un obiect, cutia poate conține obiecte precum ceainicul. dar odată ce primiți o cutie și o deschideți… și nimic acolo! Cineva a făcut o greșeală și ți-a trimis o cutie goală. Caseta nu conține nimic sau, spunând altfel, conține o valoare null
.
2., Cum pentru a verifica nul
mod bun de a verifica pentru null
este prin utilizarea strictă egalitate operator:
const missingObject = null;const existingObject = { message: 'Hello!' };missingObject === null; // => trueexistingObject === null; // => false
missingObject === null
se evaluează la true
pentru missingObject
variabilă conține un null
valoare.
Dacă o variabilă conține o non-valoare nulă, ca pe un obiect, expresia existingObject === null
se evaluează la false
.
2.,1 null is falsy
null
, alongside false
, 0
, ''
, undefined
, NaN
, is a falsy value. If a falsy value is encountered in conditionals, then JavaScript coerces falsy to false
.
Boolean(null); // => falseif (null) { console.log('null is truthy');} else { console.log('null is falsy'); // logs 'null is falsy'}
2.2 typeof null
Interestingly, to what value type null
evaluates to?,
typeof null; // => 'object'
Hm… cum ar putea tipul unui obiect lipsă să evalueze la'object'
? Se pare typoef null
fiind 'object'
a fost o greșeală în implementarea JavaScript timpurie.
nu utilizați typeof
operator pentru a detecta o valoare null
. După cum am menționat anterior, utilizați operatorul strict de egalitate myVar === null
.,
Dacă doriți pentru a verifica dacă o variabilă conține un obiect folosind typeof
operator, trebuie să verificați incredibil null
eu:
3. Capcana de nul
null
ar putea apărea, de multe ori în mod neașteptat, în situații când vă așteptați un obiect. Apoi, dacă încercați să extrageți o proprietate din null
, JavaScript aruncă o eroare.,
Să folosim din nou greetObject()
funcția și încercați să accesați message
proprietate de la obiectul returnat:
let who = '';greetObject(who).message; // throws "TypeError: greetObject() is null"
who
variabila este un șir gol, funcția returnează null
. Când accesați message
proprietate de lanull
, este aruncată o eroare TypeError.,
maner null
fie prin utilizarea opțională înlănțuirea cu nullish coalescență:
let who = '';greetObject(who)?.message ?? 'Hello, Stranger!'; // => 'Hello, Stranger!'
sau de a folosi 2 alternative descrise în secțiunea următoare.
4. Alternative la null
este tentant să se întoarcă null
atunci când nu se poate construi un obiect. Dar această practică are dezavantaje.
de îndată ce null
apare în stiva dvs. de execuție, trebuie să o verificați întotdeauna.,
am încerca să evite întoarcerea null
în favoarea:
- se întoarce un obiect implicit în loc de
null
- aruncat o eroare, în loc de a se întoarce
null
Să ne amintim greetObject()
funcție care returnează salut obiecte.
în Loc de a se întoarce null
când argument lipsește, poți returna un obiect implicit:
fie arunca o eroare:
Aceste practici să ai de-a face cu null
la toate.
5., null vs undefined
undefined
este valoarea unei variabile neinitializate sau proprietate obiect.
De exemplu, dacă se declară o variabilă, fără a atribui o valoare inițială, accesul la astfel de variabilă se evaluează la undefined
:
let myVariable;myVariable; // => undefined
principala diferență între null
și undefined
este că null
reprezintă o lipsă de obiect, în timp ce undefined
reprezintă o neinitializata de stat.,
The strict equality operator ===
distinguishes null
from undefined
:
null === undefined; // => false
While loose equality operator ==
considers null
and undefined
equal:
null == undefined; // => true
I use the loose equality operator to check whether a variable is null
or undefined
:
6., Rezumat
null
este o valoare specială în JavaScript care reprezintă un obiect lipsă.
operatorul de egalitate strictă determină dacă o variabilă este nulă: variable === null
.
typoef
operatorul este util pentru a determina tipul unei variabile (număr, șir, boolean). Cu toate acestea, typeof
este înșelătoare în cazul în care de null
: typeof null
se evaluează la 'object'
.,
null
și undefined
sunt oarecum echivalente, încă, null
reprezintă o lipsă de obiect, în timp ce undefined
neinitializata de stat.
evitați, dacă este posibil, returnareanull
sau setarea variabilelor lanull
. Această practică conduce la răspândirea valorilor și verificărilor nule pentru null
. În schimb, încercați să utilizați obiecte cu proprietăți implicite sau chiar să aruncați erori.
după ce a stăpânit null
, de ce nu master undefined
?, Urmați postarea mea 7 Sfaturi pentru a gestiona nedefinit în JavaScript.
ce condiție folosiți pentru a verifica null
?