Erinevus nullis ja määratlemata JavaScripti vahel
Viide
JavaScriptNulli 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.