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>