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.