Riguardo alla questione dell'operatore === cito il mio manuale di Javascript.
Differenza tra == e ===
L'operatore == restituisce un valore true se i valori o le istruzioni che si trovano a destra dell'operatore sono uguali, ANCHE SE NON DELLO STESSO TIPO, a quelle alla sua sinistra.
Si noti come l'istruzione "4"==4 restituisca true.
Questo accade poichè Javascript converte il valore della stringa "4" nel valore numerico 4.
Chi ha un po' di infarinatura di un linguaggio come Visual Basic .NET, sa che, per ottimizzare l'uso della memoria, si può assegnare un valore ad una variabile "numerica" o "stringa"
Es: dim x as Integer=4 dim y as String="4" quindi
4 è di tipo diverso rispetto a "4".
L'operatore === (di uguaglianza esatta), invece, è una novità introdotta a partire da Javascript 1.5, restituisce true solo se i valori alle sue estremità sono UGUALI E DELLO STESSO TIPO
quindi "4"===4 restituisce FALSE, mentre per avere il valore TRUE devo fare "4"==="4" o 4===4