Yo seguiría las recomendaciones de los compañeros de mas arriba, ellos saben de lo que hablan, de todas formas cuéntanos como te va con el tema, y recuerda, te podemos guiar, pero tu debes alcanzar la meta.
Para entrar en detalles mas profundos con javascript,
undefined es un estado (por decirlo de alguna forma) que puede aparecer por 2 razones:
- La variable fue declarada (con var o con let) pero no inicializada.
- Se intenta acceder a una variable que no a sido declarada.
Cuando undefined aparece porque la variable no fue inicializada el error debiera ser de referencia (ReferenceError, que es capturable con try catch), por otra parte, cuando se intenta acceder a una variable no definida (valga la redundancia), javascript nos notifica que la variable no existe con undefined (indefinida).
Ahora bien, cuando evaluamos expresiones con undefined se comporta de la siguiente manera:
- Para cosas con números dirá que no es un número (NaN)
- En expresiones booleanas será un false.
De acuerdo a lo que comento, podemos realizar las siguientes operaciones con variables y undefined:
// definida pero no inicializada
var variable;
if (variable) // la variable es undefined, la evaluamos como booleana y se comporta como false
// codigo que nunca se ejecuta
if (otraVariable) // variable no definida, por lo tanto tambien es undefined y se comportara como false
// codigo que nunca se ejecuta
if (variable === undefined) // variable no definida es igual a undefined usando la coomparacion por tipos
// codigo que nunca se ejecuta
if (variable == undefined) // funciona tambien para comparaciones simples
// codigo qeu nunca se ejecuta
// tambien se puede obtener el tipo de undefined como string y compararlo
if (typeof variable == 'undefined') // typeof devuelve el tipo de variable (undefined) como string
// codigo que nunca se ejecuta
Bien, creo que lo he explicado relativamente entendible, ahora bien, el tema de undefined también se aplica a los arreglos con sub incides no definidos, y una cosa muy importante a la hora de jugar con esto, es que undefined es asignable (entre comillas).
var arreglo = [1];
console.log( arreglo[1] ); // el sub indice 0 existe, pero el sub indice 1 no, por lo tanto mostrara undefined
var algo = arreglo[1]; // esta es una curiosidad que no puedo explicar
/*
* No lo he investigado, pueden ser 2 cosas, primero que como es undefined, la variable algo no se va a inicializar con undefined,
* ciertamente el compilador obtimiza varias cosas en el background, pero no se si asignará undefined a una variable que ya es undefined.
* Sería bueno que sepa que pasa ahí lo explicara.
*/
Espero te sirva la explicación de undefined.
Saludos