La diferència entre nul i indefinit a JavaScript
Referència
JavaScriptÚs típic de nul
Com a paràmetre de funció, significa que el paràmetre de funció no és un objecte
function myFn(obj) {
if(null == obj) {
// code
}
}
Com a final de la cadena de prototips d'objecte
Object.getPrototypeOf(Object.prototype);
Quan deixeu anar la variable, assigneu-ne la variable
let o={
code:'abc'
};
o = null;
Ús típic d’indefinit
La variable es declara però no s’assigna, el valor de la variable no està definit
let o;
console.log(o); //undefined
El paràmetre que hauria de proporcionar la funció no es proporciona quan es truca, el valor del paràmetre que no es proporciona no està definit
function myFn(o) {
console.log(o);
}
myFn(); //undefined
Propietats que l'objecte no conté; el valor no està definit
let o={
code:'abc'
};
console.log(o.name); //undefined
Quan la funció no retorna cap valor, per defecte torna indefinit
function myFn(obj) {
obj = 'a';
}
console.log(myFn()); //undefined
Semblances entre nul i indefinit
False quan es converteix en booleà
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
La diferència entre nul i indefinit
El resultat és diferent quan es converteix en un nombre. El resultat de la conversió nul·la és un valor de número vàlid de 0 i el resultat de la conversió sense definir és NaN.
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
Els dos tipus són diferents, el tipus de nul és objecte i el tipus d’indefinit no definit.
console.log(typeof null); //object
console.log(typeof undefined); //undefined
comparar nul i indefinit
Per distingir entre nul i indefinit, només es pot utilitzar la congruència. En la congruència, es compararà estrictament si els dos tipus són iguals.
console.log(Boolean(null == undefined)); // true
console.log(Boolean(null === undefined)); // false
per concloure
Després de la comparació anterior, tenim una clara comprensió d’aquests dos tipus. Normalment, quan jutgem si una variable té un valor vàlid en escriure codi, no necessitem distingir-ne les dues, només l’utilitzem com a tipus booleà. Però quan hem de jutjar si la propietat existeix, hem d’utilitzar estrictament el tipus per jutjar indefinit. Finalment, si passem un valor numèric, primer hem de fer un judici i no es pot emetre directament a un tipus numèric, en cas contrari, el resultat nul ens farà obtenir resultats anormals i, si no es defineix, calcularà directament el resultat invàlid NaN.