2012-05-12 16 views
16

Se ho una dichiarazione nel modo seguente:Quando si dichiara una variabile in javascript, il valore predefinito è null?

var j; 

fa j==null fino a quando ho impostato uguale a qualcosa?

+10

'j == null' sarà' true', ma non perché 'j' è' null'. Invece è perché 'j' è' indefinito', ma l'operatore '==' non scrive coercizione. '==' considera 'null' e' undefined' uguali. L'operatore '===' è rigoroso e non esegue alcuna coercizione. –

risposta

25

No, ha il valore di default di undefined
Ma se si desidera utilizzare la condizione !j, funzionerà con entrambi i valori (cioè indefinito o nulli)

Nota che (j==null) è true, ma (j===null) è false ... JavaScript ha valori "falsy" e regole a volte inaspettate per convertire valori, oltre a fantasioso operatore === per confrontare valore e tipo allo stesso tempo.

+2

In realtà, j == null valuterà true, j === null sarà false. (Ma sì, il valore predefinito non è definito poiché j === undefined sarà vero). – SoWeLie

+0

così scrivendo k === null si valuta su true, poiché la variabile k non esiste? suppongo anche che io possa usare il contrario e dire "if (j)", e che valuterà il falso, corretto? – thisissami

+0

@thisissami no, genererà un ReferenceError. La cosa difficile da ottenere è che * undefined * è in realtà un valore valido. Ci sono sia 'null' che' undefined', sono simili ma differenti. –

Problemi correlati