So che di seguito sono i due modi in JavaScript per verificare se una variabile non lo è null
, ma sono confuso quale sia la migliore pratica da utilizzare.
Dovrei:
if (myVar) {...}
o
if (myVar !== null) {...}
So che di seguito sono i due modi in JavaScript per verificare se una variabile non lo è null
, ma sono confuso quale sia la migliore pratica da utilizzare.
Dovrei:
if (myVar) {...}
o
if (myVar !== null) {...}
Risposte:
Non sono equivalenti. Il primo eseguirà il blocco seguendo l' if
affermazione if myVar
è true (ovvero valuta true
in un condizionale), mentre il secondo eseguirà il blocco se myVar
è un valore diverso da null
.
Gli unici valori che non sono veritieri in JavaScript sono i seguenti (ovvero valori falsi ):
null
undefined
0
""
(la stringa vuota)false
NaN
Ecco come è possibile verificare se una variabile non è NULL:
if (myVar !== null) {...}
il blocco verrà eseguito se myVar non è nullo .. verrà eseguito se myVar non è definito o falso o 0
o NaN
o altro ..
("")
e indefinita. Vedi il mio violino come riferimento: jsfiddle.net/b0tm7yaf
Leggi questo post: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
Ha alcuni buoni consigli per JavaScript in generale, ma una cosa che menziona è che dovresti controllare null come:
if(myvar) { }
Menziona anche ciò che è considerato "falso" che potresti non capire.
if(myVar) { code }
NON verrà eseguito solo quando myVar
è uguale a: false, 0, "", null, undefined, NaN
o non hai mai definito la variabile myVar
(quindi il codice interrompe l'esecuzione e genera un'eccezione).if(myVar !== null) {code}
NON verrà eseguito solo quando myVar
è uguale null
o non lo hai mai definito (genera un'eccezione).Qui hai tutto ( src )
Se
== (la sua negazione ! = )
=== (la sua negazione ! == )
C'è un altro possibile scenario che ho appena incontrato.
Ho fatto una chiamata Ajax e ho recuperato i dati come null, in un formato stringa. Ho dovuto controllare in questo modo:
if(value != 'null'){}
Quindi, null era una stringa che diceva "null" anziché essere realmente null.
EDIT: Dovrebbe essere chiaro che non lo sto vendendo come dovrebbe essere fatto. Ho avuto uno scenario in cui questo era l'unico modo per farlo. Non sono sicuro del perché ... forse il ragazzo che ha scritto il back-end stava presentando i dati in modo errato, ma a prescindere, questa è la vita reale. È frustrante vederlo votato verso il basso da qualcuno che capisce che non è del tutto giusto, e quindi votato da qualcuno che aiuta davvero.
null
stringhe.
value = JSON.parse(value)
e quindi utilizzare il value != null
test semplice e corretto
if myVar
è null quindi se il blocco non viene eseguito in altro modo verrà eseguito.
if (myVar != null) {...}
'null'
, ma il valore speciale null
.
Le due dichiarazioni condizionali che elenchi qui non sono migliori l'una dell'altra. Il tuo utilizzo dipende dalla situazione. A proposito, hai un refuso nel secondo esempio. Dovrebbe esserci solo un segno di uguale dopo il punto esclamativo.
Il primo esempio determina se il valore in myVar è true ed esegue il codice all'interno di {...}
Il secondo esempio valuta se myVar non è uguale a null e se quel caso è vero eseguirà il tuo codice all'interno di {...}
Suggerisco di dare un'occhiata alle dichiarazioni condizionali per ulteriori tecniche. Una volta che hai familiarità con loro, puoi decidere quando ne hai bisogno.
=
è cruciale e fa un'enorme differenza nella domanda. Forse non sei a conoscenza dell'esistenza !==
e degli ===
operatori di JavaScript?