Hay DOS cosas que debes entender sobre indefinido ...
- el tipo
undefined que solo puede tener un valor .
- la variable
undefined
Ahora lea lo siguiente con mucho cuidado ...
Hay tantos valores de tipo number(10, 10.01, 1e1). Pero solo puede haber un valor de tipo undefined, y ese valor se almacena en la variable undefined. Ese valor tiene representación NO literal - por ejemplo, los valores de número 1, 100, 1e-1son todos los literales de número de tipo, pero el valor almacenado en la variable undefinedno tiene forma literal.
undefinedes una variable, solo una variable normal, que JavaScript declara y le asigna el valor de tipo undefineden el ámbito global. Entonces puedes hacer todo lo siguiente ...
tipo de indefinido; // "indefinido"
indefinido = 100;
tipo de indefinido; // "número"
indefinido = nulo 0;
tipo de indefinido; // "indefinido"
window.undefined === undefined; // cierto
window.undefined === void 0; // cierto
- Si no desea utilizar la variable
undefined, puede generar el valor de tipo undefinedmediante la expresión void 0, cuyo único propósito es devolver un valor de tipo undefined.
... alguien puede explicarme por qué esta cosa se ha insertado en JavaScript ...
NO. Al igual que nadie puede explicar por qué las variables no declaradas van al ámbito global en lugar de local. Solo necesita entrenarse para usarlo inteligentemente en lugar de tratar de encontrar justificaciones para su existencia.
... tenemos un valor nulo ...
Aunque nullpuede hacer cosas undefined, está más o menos relacionado con los objectsescalares. De hecho, JavaScript se considera nullun objeto: typeof nulldevuelve "objeto".
En mi opinión, la conclusión es NO tratar de razonar los propósitos absolutos de undefinedy null, y usarlos en su código de manera inteligible, para que su código sea legible, mantenible y reutilizable.
undefinedy cuándo usarnull