totul despre null în JavaScript

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 messageproprietate 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?

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *