Razlika između null i undefined u JavaScript-u

Referenca

JavaScript

Uobičajena upotreba null

Kao parametar funkcije, to 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

Netač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 vrste su različite, tip null je objekt, a tip undefined je nedefiniran.

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

uporedi null i undefined

Za razlikovanje nule od nedefinirane može se koristiti samo podudarnost, koja će strogo usporediti jesu li dvije vrste jednake.

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

da sumiram

Nakon gornje usporedbe, imamo jasno razumijevanje ove dvije vrste. Obično kada procjenjujemo ima li varijabla valjanu vrijednost prilikom pisanja koda, ne trebamo praviti razliku između njih, već je koristimo kao logički tip. Ali kada trebamo prosuditi postoji li imovina, moramo strogo koristiti tip za suđenje prema nedefiniranim. Konačno, ako proslijedimo 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 nenormalnih rezultata, a undefined će direktno izračunati nevažeći rezultat NaN.