Mi sono imbattuto nel seguente codice:
function test(data) {
if (data != null && data !== undefined) {
// some code here
}
}
Sono un po 'nuovo di JavaScript, ma, da altre domande che ho letto qui, ho l'impressione che questo codice non abbia molto senso.
Riceverai un errore se accedi a una variabile non definita in qualsiasi contesto diverso datypeof.
Aggiornamento: la (citazione della) risposta sopra potrebbe essere fuorviante. Dovrebbe dire «una variabile non dichiarata» , invece di «una variabile non definita» .
Come ho scoperto, nelle risposte di Ryan ♦ , maerics e nwellnhof , anche quando non viene fornito alcun argomento a una funzione, le sue variabili per gli argomenti vengono sempre dichiarate. Questo fatto dimostra inoltre che il primo elemento nell'elenco seguente è errato.
Da quanto ho capito, si possono verificare i seguenti scenari:
La funzione è stata chiamata senza argomenti, creando cosìdatauna variabile non definita e generando un erroredata != null.La funzione è stata chiamata specificamente con
null(oundefined), come argomento, nel qual casodata != nullprotegge già il codice interno, rendendolo&& data !== undefinedinutile.La funzione è stata chiamata con un argomento non nullo, nel qual caso passerà banalmente sia
data != nulledata !== undefined.
D: La mia comprensione è corretta?
Ho provato quanto segue, nella console di Firefox:
--
[15:31:31.057] false != null
[15:31:31.061] true
--
[15:31:37.985] false !== undefined
[15:31:37.989] true
--
[15:32:59.934] null != null
[15:32:59.937] false
--
[15:33:05.221] undefined != null
[15:33:05.225] false
--
[15:35:12.231] "" != null
[15:35:12.235] true
--
[15:35:19.214] "" !== undefined
[15:35:19.218] true
Non riesco a capire un caso in cui il data !== undefined dopo data != null potrebbe essere di qualche utilità.
if(data)significherebbe che non può passare falseo 0come valori per data.
if(typeof someUndefVar == whatever) -- workse if(someUnderVar) -- error.
data !== null && data !== undefined, che è equivalente a data != nullcui è equivalente data != undefined. La prima forma tende a essere favorita in quanto è più esplicita riguardo alle condizioni, mentre sarebbe facile trascurarle entrambe nulle undefinedvengono verificate con le due condizioni successive.
undefinedIMO sono un odore di codice. Non è una parola chiave protetta come null, è una variabile che sembra essere indefinita. Questo è completamente valido e sta per violare il codice:undefined = 1



if (data). È un modo mnemonico Javascript per verificare se ladatavariabile viene valutata come vera.undefined,null, False, 0, stringa vuota, array vuoto e oggetto (?) Senza proprietà restituisce false, il resto è vero.