2013-05-10 9 views
8

ho visto questo in un esempio JavaScriptCosa comunica: my_var = my_var || 69

my_var = my_var || 69 

Presumo che significa controllare se my_var esiste, se non impostato my_var a 69. E 'questo il caso? C'è qualche documentazione su questo, è molto difficile rappresentare una ricerca google/SO, qualcuno potrebbe indicarmi la direzione dei documenti o il QA duplicato?

(L'esempio non ha utilizzato 69, che è solo a me di essere volgare)

+0

Si potrebbe trovare quelli domanda interessante: http://stackoverflow.com/q/894860/1169798 e http://stackoverflow.com/q/894860/1169798 – Sirko

+0

Attenzione che questa è una cattiva idea in quanto non funziona per i valori falsi di my_var, verranno sovrascritti. – flup

+0

Non controlla se 'my_var' esiste. Se 'my_var' non esiste, ottieni' ReferenceError: my_var non è definito'. –

risposta

12

Abbastanza facile da provare nella console JS.

var my_var 
my_var = my_var || 69 
//69 

var my_var = 5 
my_var = my_var || 69 
//5 

Si sta impostando la variabile solo se è attualmente conducendo un valore di falsy .

Falsy values in JS are:

  1. false
  2. null
  3. undefined
  4. La stringa vuota ''
  5. Il numero 0
  6. Il numero NaN
+2

+1 per il "falso". Le persone spesso usano questo per impostare un valore predefinito se my_var non era già impostato, ma è importante tenere presente che non funzionerà come previsto non appena 0 o NaN sono valori accettabili per questa variabile. – Shautieh

0

Si chiama "default" il più delle volte. Il valore "predefinito" sul valore dopo ||. L'operazione è un confronto lento, come quello che si fa con le dichiarazioni if usando ==.

Tutto quanto non falsy come:

  • falsa
  • stringa vuota ('')
  • nullo
  • indefinito
  • NaN

è c onsiderato vero. Se il primo valore non è uno di questi, allora è quello assegnato. Se lo è, viene assegnato il valore a destra.

0

L'operatore ||or ha due operandi (sinistro e destro). Controlla se il valore a sinistra è vero e se così lo assegna alla variabile assegna altrimenti il ​​valore della mano destra alla variabile.

var my_var = false; 
my_var = my_var || true; 
//true 
Problemi correlati