A null és undefined közötti különbség a JavaScript-ben
Referencia
JavaScriptA null tipikus használata
Funkcióparaméterként azt jelenti, hogy a függvényparaméter nem objektum
function myFn(obj) {
if(null == obj) {
// code
}
}
Az objektum prototípus láncának végén
Object.getPrototypeOf(Object.prototype);
A változó elengedésekor rendeljen null értéket a változóhoz
let o={
code:'abc'
};
o = null;
A undefined tipikus használata
A változó deklarált, de nincs hozzárendelve, a változó értéke nincs meghatározva
let o;
console.log(o); //undefined
Az a paraméter, amelyet a függvénynek meg kell adnia, nem kerül megadásra híváskor, akkor a nem megadott paraméter értéke nincs meghatározva
function myFn(o) {
console.log(o);
}
myFn(); //undefined
Tulajdonságok, amelyeket az objektum nem tartalmaz, az érték nincs meghatározva
let o={
code:'abc'
};
console.log(o.name); //undefined
Ha a függvény nem ad vissza értéket, akkor alapértelmezés szerint meghatározatlanul tér vissza
function myFn(obj) {
obj = 'a';
}
console.log(myFn()); //undefined
A null és a undefined hasonlóságai
Hamis, ha logikai értékre konvertálunk
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
A null és a undefined közötti különbség
Az eredmény számra konvertálva különbözik: A null konverzió eredménye 0 érvényes számérték, a nem definiált konverzió eredménye pedig NaN.
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
A két típus különbözik, a null típusa az objektum, és a undefined típusa nincs meghatározva.
console.log(typeof null); //object
console.log(typeof undefined); //undefined
null és undefined összehasonlítása
A null és a undefined megkülönböztetéséhez csak a kongruencia használható, kongruenciában szigorúan összehasonlítja, hogy a két típus egyenlő-e.
console.log(Boolean(null == undefined)); // true
console.log(Boolean(null === undefined)); // false
Összefoglalva
A fenti összehasonlítás után világos megértésünk van e két típusról. Általában, amikor a kód írásakor megítéljük, hogy egy változónak van-e érvényes értéke, akkor nem kell különbséget tennünk a kettő között, csak logikai típusként kell használnunk. De amikor meg kell ítélnünk, hogy az ingatlan létezik-e, akkor szigorúan a típust kell használnunk a meghatározatlan megítéléshez. Végül, ha átadunk egy numerikus értéket, először meg kell határoznunk, és nem lehet közvetlenül numerikus típusra vetíteni, különben a null kóros eredményeket fog elérni, és a undefined közvetlenül kiszámítja az érvénytelen NaN eredményt.