Undefined y null son "lo mismo" (no exactamente):
Cita: undefined == null; // true
undefined === null; // false
A diferencia de null, undefined es una variable, por lo que esto es perfectamente válido:
y también totalmente carente de sentido.
Los tres son falsy values, pero tienen cometidos distintos. Por ejemplo undefined es lo que devuelve cuandi intentas acceder a una propiedad de un objeto que no existe:
Código Javascript
:
Ver originalvar obj = {};
obj.a; // undefined
Null puedes retornarlo en una función, por ejemplo al buscar elementos en el DOM y no encontrar nada, pero te recomiendo mejor [] para ese caso concreto.
Por último, 0 es falsy pero también es un número, puedes usarlo por ejemplo para acceder a posiciones de arrays:
Código Javascript
:
Ver originalvar f = function(x){ return +!!x; } // 0 ó 1
var values = ['foo', 'bar', 'baz', 'candy'];
console.log(values[f(false)]); // 'foo' -> values[0]
console.log(values[f(true)]); // 'bar' -> values[1]
Saludos (: