Razlika između null i undefined u JavaScript-u

Referenca

JavaScript

Tipična upotreba null

Kao parametar funkcije, znači da parametar funkcije nije objekt

            function myFn(obj) {
    if(null == obj) {
        // code
    }
}
        

Kao kraj lanca prototipa objekta

            Object.getPrototypeOf(Object.prototype);
        

Kada otpuštate varijablu, varijabli dodijelite null

            let o={
 code:'abc'
};
o = null;
        

Uobičajena upotreba nedefiniranog

Varijabla je deklarirana, ali nije dodijeljena, vrijednost varijable je nedefinirana

            let o;
console.log(o);    //undefined
        

Parametar koji funkcija treba pružiti nije osiguran pri pozivu, tada je vrijednost parametra koji nije osiguran nedefinirana

            function myFn(o) {
    console.log(o);
}
myFn();   //undefined
        

Svojstva koja objekt ne sadrži, vrijednost je nedefinirana

            let o={
 code:'abc'
};
console.log(o.name);    //undefined
        

Kad funkcija ne vrati vrijednost, vraća se prema zadanim postavkama nedefinirano

            function myFn(obj) {
    obj = 'a';
}
console.log(myFn());    //undefined
        

Sličnosti između null i undefined

Lažno kada se pretvori u logičku vrijednost

            console.log(Boolean(null));  // false
console.log(Boolean(undefined)); // false
        

Razlika između null i undefined

Rezultat je drugačiji kada se pretvori u broj. Rezultat null pretvorbe je valjana vrijednost broja 0, a rezultat nedefinirane pretvorbe je NaN.

            console.log(Number(null));  // 0
console.log(Number(undefined)); // NaN
        

Dvije su vrste različite, vrsta null je objekt, a vrsta undefined je nedefinirana.

            console.log(typeof null); //object
console.log(typeof undefined); //undefined
        

usporedi null i undefined

Da bi se razlikovala nula i nedefinirana, može se koristiti samo podudarnost. U podudarnosti će se strogo uspoređivati ​​jesu li dvije vrste jednake.

            console.log(Boolean(null == undefined));  // true
console.log(Boolean(null === undefined)); // false
        

da sumiramo

Nakon gornje usporedbe jasno razumijemo ove dvije vrste. Obično kada procjenjujemo ima li varijabla valjanu vrijednost prilikom pisanja koda, ne trebamo razlikovati to dvoje, samo je koristimo kao logički tip. Ali kada trebamo prosuditi postoji li imovina, moramo strogo koristiti vrstu za prosuđivanje nedefiniranih. Napokon, ako prenesemo numeričku vrijednost, prvo moramo donijeti prosudbu i ne možemo je izravno prebaciti na numerički tip, jer će u suprotnom null dovesti do abnormalnih rezultata, a undefined će izravno izračunati nevažeći rezultat NaN.