Erinevus nullis ja määratlemata JavaScripti vahel

Viide

JavaScript

Nulli tüüpiline kasutamine

Funktsiooni parameetrina tähendab see, et funktsiooni parameeter ei ole objekt

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

Objekti prototüübi keti lõpuks

            Object.getPrototypeOf(Object.prototype);
        

Muutuja vabastamisel määrake muutujale null

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

Määratlemata tüüpiline kasutus

Muutuja on deklareeritud, kuid sellele pole määratud, muutuja väärtus pole määratletud

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

Parameetrit, mille funktsioon peaks pakkuma, ei helistata, siis parameetri väärtus, mida ei esitata, on määratlemata

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

Atribuudid, mida objekt ei sisalda, väärtus pole määratletud

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

Kui funktsioon ei tagasta väärtust, naaseb see vaikimisi määratlemata

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

Sarnasused nullide ja määratlemata vahel

Booleaniks teisendamisel on vale

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

Erinevus nullist ja määratlemata

Numbriks teisendamise tulemus on erinev. Nullkonversiooni tulemus on kehtiv arvväärtus 0 ja määratlemata teisendamise tulemus on NaN.

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

Need kaks tüüpi on erinevad, nulli tüüp on objekt ja määratlemata tüüp on määratlemata.

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

võrrelda null ja määratlemata

Nulli ja määratlemata eristamiseks saab kasutada ainult kongruentsust. Kongruentsuses võrreldakse rangelt, kas need kaks tüüpi on võrdsed.

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

Kokkuvõtteks

Pärast ülaltoodud võrdlust on meil selge arusaam neist kahest tüübist. Tavaliselt, kui otsustame, kas muutujal on koodi kirjutamisel kehtiv väärtus, ei pea me neid kahte vahet tegema, vaid kasutage seda Boole'i ​​tüübina. Kuid kui peame otsustama, kas vara on olemas, peame määratluse hindamiseks rangelt kasutama tüüpi. Lõpuks, kui edastame arvulise väärtuse, peame kõigepealt langetama otsuse ja seda ei saa otse numbrilisele tüübile valada, vastasel juhul põhjustab null meile ebaharilikke tulemusi ja määratlemata arvutab otse vale tulemuse NaN.