variable namespacing error check javascript null undefined

namespacing - undefined javascript error



Cuando JavaScript devuelve nulo y no definido? (4)

alerta (sam); // devuelve undefined

No, eso es una excepción.

Obtienes undefined cuando accedes a una propiedad no configurada; Obtienes un error cuando usas un nombre no establecido directamente.

Las variables globales son interesantes porque se puede acceder usando un nombre de variable simple o usando las propiedades del objeto global de window :

alert(window.sam); // undefined alert(window[''sam'']); // undefined alert(''sam'' in window); // false alert(sam); // ERROR

Si se declara sam pero no se inicializa, el acceso a window.sam aún no lo tiene undefined , pero por un motivo diferente: hay una entrada en el objeto de window para sam , pero apunta al mismo objeto undefined que obtienes cuando accedes a un no - Propiedad existente.

var sam; alert(window.sam); // undefined alert(window[''sam'']); // undefined alert(''sam'' in window); // ** true alert(sam); // ** undefined

Esto es, por supuesto, un desorden sangriento confuso; undefined es uno de los peores errores en el diseño del lenguaje JavaScript.

null otro lado, null está bien y funciona de manera muy similar a los valores null / nil / void / None en otros idiomas. No entra en ninguno de los anteriores.

He estado usando JavaScript por un par de años y nunca me importó la diferencia entre null e undefined anteriormente, siempre uso undefined para validar la existencia del objeto.

Pero recientemente vine a través de este artículo . Aquí dijeron

JavaScript distingue entre null, que es un objeto de tipo ''objeto'' que indica un no valor deliberado, y undefined, que es un objeto de tipo ''no definido'' que indica un valor sin inicializar, es decir, un valor ni siquiera ha sido asignado aún Hablaremos de las variables más adelante, pero en JavaScript es posible declarar una variable sin asignarle un valor. Si haces esto, el tipo de la variable no está definido.

Estoy completamente confundido ahora, qué es exactamente lo que no tiene valor aquí. Cómo este no-valor difiere de undefined . ¿Y cuáles son las circunstancias javascript devuelve null .

He probado la siguiente muestra

var sam; alert(sam); // returns undefined

Y

try { //var sam; alert(sam); } catch(ex) { } // exception says: sam is undefined

Y no estoy seguro de cuándo js regresan nulos. ¿Puede alguien aclararme?


La forma en que los distingo es indefinido siendo "No he definido este valor" y siendo nulo "He definido este valor, pero no sé o no puedo averiguar cuál debería ser el valor".


Para que una variable reciba un valor nulo debe ser asignada. null se utiliza para indicar un valor desconocido o no importa. undefined por otro lado, está diseñado para indicar que la propiedad a la que se está accediendo nunca ha asignado un valor. Esto difiere de null .

Con null uno está diciendo deliberadamente "No sé qué valor debería tener esto todavía" o "No me importa qué valor tenga este momento". OTH en undefined realmente dice "¿Está seguro de que debería estar usando este valor que no se le ha asignado?".


<script type="text/javascript"> // variable with an unasigned value var a; if (a == undefined) { alert(''a is undefined''); } if (a == null) { alert(''a is undefined''); } // this will produce an error if (b == undefined) { alert(''b is undefined''); } // this is the right way to handle not defined variables if (typeof(c) == ''undefined'') { alert(''c is blabla''); } </script>