Si te encuentras con alguna parte que no comprendes puedes comentarlo y te ayudaremos lo mas rápido que podamos.
Solución:
En JavaScript, undefined
significa que se ha declarado una variable pero aún no se le ha asignado un valor, como por ejemplo:
var TestVar;
alert(TestVar); //shows undefined
alert(typeof TestVar); //shows undefined
null
es un valor de asignación. Se puede asignar a una variable como una representación sin valor:
var TestVar = null;
alert(TestVar); //shows null
alert(typeof TestVar); //shows object
De los ejemplos anteriores, es claro que undefined
y null
son dos tipos distintos: undefined
es un tipo en sí mismo (indefinido) mientras que null
es un objeto
null === undefined // false
null == undefined // true
null === null // true
y
null = 'value' // ReferenceError
undefined = 'value' // 'value'
(agregando caracteres debido a la falta de caracteres, por lo que puedo publicar esto).
Elegí esto de aquí
El valor indefinido es un valor primitivo que se utiliza cuando a una variable no se le ha asignado un valor.
los null valor es un valor primitivo que representa el nullreferencia vacía o inexistente.
Cuando declaras una variable a través de var y no le das un valor, tendrá el valor indefinido. Por sí mismo, si intenta WScript.Echo() o alert() este valor, no verá nada. Sin embargo, si agrega un espacio en blanco string entonces de repente aparecerá:
var s;
WScript.Echo(s);
WScript.Echo("" + s);
Puede declarar una variable, establecerla en nully el comportamiento es idéntico excepto que verá “null” impreso versus “indefinido”. Esta es una pequeña diferencia.
Incluso puede comparar una variable que no está definida con null o viceversa, y la condición será true:
undefined == null
null == undefined
Sin embargo, se consideran dos tipos diferentes. Si bien undefined es un tipo en sí mismo, null se considera un valor de objeto especial. Puedes ver esto usando typeof() que devuelve un string que representa el tipo general de una variable:
var a;
WScript.Echo(typeof(a));
var b = null;
WScript.Echo(typeof(b));
Ejecutar el script anterior dará como resultado el siguiente resultado:
undefined
object
Independientemente de que sean de diferentes tipos, seguirán actuando de la misma manera si intenta acceder a un miembro de cualquiera de ellos, es decir, lanzarán una excepción. Con WSH verá que el temido “‘varname’ es null o no un objeto” y eso si tienes suerte (pero ese es un tema para otro artículo).
Puede configurar explícitamente una variable para que no esté definida, pero le recomiendo encarecidamente que no lo haga. Recomiendo solo establecer variables para null y deje indefinido el valor de las cosas que olvidó configurar. Al mismo tiempo, te animo a que establezcas siempre cada variable. JavaScript tiene una cadena de alcance diferente a la de los lenguajes de estilo C, confundiendo fácilmente incluso a los programadores veteranos y configurando variables para null es la mejor manera de prevenir errores basados en él.
Otra instancia en la que verá una ventana emergente indefinida es cuando usa el operador de eliminación. Aquellos de nosotros de un mundo C podríamos interpretar esto incorrectamente como la destrucción de un objeto, pero no es así. Lo que hace esta operación es eliminar un subíndice de una matriz o un miembro de un objeto. Para matrices, no afecta la longitud, sino que el subíndice ahora se considera indefinido.
var a = [ 'a', 'b', 'c' ];
delete a[1];
for (var i = 0; i < a.length; i++)
WScript.Echo((i+".) "+a[i]);
El resultado del script anterior es:
0.) a
1.) undefined
2.) c
También obtendrá una devolución indefinida al leer un subíndice o miembro que nunca existió.
La diferencia entre null e indefinido es: JavaScript nunca configurará nada para null, eso es generalmente lo que hacemos. Si bien podemos establecer variables en indefinidas, preferimos null porque no es algo que se haga por nosotros. Cuando está depurando esto significa que cualquier cosa configurada para null es de su propia creación y no de JavaScript. Más allá de eso, estos dos valores especiales son casi equivalentes.
valoraciones y comentarios
Si aceptas, puedes dejar un ensayo acerca de qué te ha parecido esta reseña.