codice:
var a = $("<input/>");
a.get(0).value = undefined;
alert(typeof a.val()); // string
Gli ultimi due esempi che postati da blaze danno lo stesso risultato perché si usa l'operatore ==. Se si usasse === il risultato sarebbe diverso.
Per l'array puoi fare così:
codice:
Array.prototype.indexExists = function (index) { // Definisco la funzione
return index >= 0 && this.length > index && Math.round(index) === index;
};
var myArray = [];
myArray[1] = 0;
alert(myArray.indexExists(1)); // true
alert(myArray.indexExists(7)); // false
myArray[3] = undefined;
alert(myArray.indexExists(3)); // true: anche se gli ho assegnato valore undefined, l'elemento esiste
alert(myArray.indexExists(-1)); // false