Hay 2 valores especiales en JavaScript que representan la ausencia de información: nulo y indefinido. Personalmente, creo que la diferencia entre estos dos valores especiales puede entenderse desde la siguiente perspectiva:
1.NULL representa un contenedor que almacena información (como una variable a la que se le ha asignado un valor antes), pero el contenido en el contenedor está vacío.
2. Undefinado significa que no se utiliza un contenedor para almacenar información.
NULL en JavaScript no es diferente de NULL en la mayoría de los otros lenguajes de programación. Básicamente se usa para indicar que el valor de la información está vacío; Mientras que en JavaScript, la expresión devuelve el resultado indefinido en las siguientes situaciones:
1. Una variable a la que nunca se le ha asignado un valor.
2. Acceda al valor de la propiedad que no existe en un objeto.
3. Acceda a miembros que no existen en la matriz.
4. Llame a una función sin una declaración de retorno.
5. Llame a una función cuya declaración de retorno esté vacía ("retorno;").
De hecho, al igual que Infinity y Nan, Undefined es una variable global en JavaScript e incluso se le puede asignar otros valores en ECMAScript 3. ECMAScript 5 corrigió este error y establece la variable indefinida en solo lectura.
Para las comparaciones entre nulas y indefinidas, se puede usar el operador congruente ===. Si se usa el operador normal ==, NULL es equivalente a indefinido:
La copia del código es la siguiente:
console.log (nulo == Undefined); // Verdadero
console.log (nulo === Undefined); // falso
Durante el proceso de programación, si necesita asignar un valor nulo a una variable, generalmente se usa nulo en lugar de indefinido. La razón es:
1. Undefinado generalmente se considera una falta de información a nivel de sistema y nivel de informes de errores.
2. NULL Generalmente se considera el nivel de programación y el valor de información en el nivel de operación lógica está vacío.
Si la conversión de tipo está involucrada en el programa, los resultados de NULL y indefinidos cuando se convierten al tipo de número son diferentes:
1. El resultado de la conversión indefinida al número es Nan.
2. El resultado de convertir nulo a número es 0.
Vale la pena mencionar que el resultado de convertir una cadena vacía y una matriz vacía en un número también es 0.
En cuanto a por qué dos valores que representan "No" están diseñados en JavaScript, puede consultar la publicación de blog de Ruan Yifeng.
experimento
En el siguiente código experimental, los resultados de la expresión están indefinidos:
La copia del código es la siguiente:
var a;
console.log (a);
muestra de función (x) {
this.x = x;
}
var s = nueva muestra ();
console.log (SX)
console.log (S.NotexistVariable);
var n = [2,3,4];
console.log (n [8]);
función test () {
// sin valor de retorno para esta función
}
console.log (test ());
función test2 () {
devolver;
}
console.log (test2 ());