2013-05-10 14 views
8

Widziałem to w przykładzie JavascriptCo to oznacza: my_var = my_var || 69

my_var = my_var || 69 

zakładam, oznacza to, by sprawdzić, czy my_var istnieje, jeśli nie została ustawiona my_var do 69. Czy to przypadek? Czy istnieje jakakolwiek dokumentacja na ten temat, bardzo trudno jest go przedstawić jako wyszukiwarkę google/SO, czy ktoś mógłby wskazać mi kierunek dokumentacji lub zduplikować kontrolę jakości?

(Przykład nie użył 69, to po prostu mnie jest beznadziejny)

+0

Można znaleźć te interesujące pytanie: http://stackoverflow.com/q/894860/1169798 i http://stackoverflow.com/q/894860/1169798 – Sirko

+0

Pamiętaj, że jest to zły pomysł, ponieważ nie działa dla wartości faleva my_var, zostaną one nadpisane. – flup

+0

Nie sprawdza, czy istnieje 'my_var'. Jeśli 'my_var' nie istnieje, otrzymasz' ReferenceError: my_var nie jest zdefiniowany'. –

Odpowiedz

12

tyle łatwe, aby spróbować w konsoli JS.

var my_var 
my_var = my_var || 69 
//69 

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

ustawiania zmiennej tylko wtedy, gdy jest ona obecnie niosący falsy wartość.

Falsy values in JS are:

  1. false
  2. null
  3. undefined
  4. Pusty ciąg ''
  5. Numer 0
  6. Numer NaN
+2

+1 za "falsy". Ludzie często używają tego, aby ustawić domyślną wartość, jeśli my_var nie jest jeszcze ustawiona, ale należy pamiętać, że nie będzie działać tak, jak należy, skoro tylko 0 lub NaN są dopuszczalnymi wartościami dla tej zmiennej. – Shautieh

0

Nazywa się "domyślnie" przez większość czasu. Wartość "defaults" do wartości po ||. Operacja jest luźnym porównaniem, podobnie jak w przypadku instrukcji if przy użyciu ==.

Nic nie falsy jak:

  • fałszywego
  • pusty łańcuch ('')
  • zerową
  • nieokreślonej
  • NaN

wynosi ok Naprawiono prawdziwość. Jeśli pierwsza wartość nie jest żadną z tych wartości, to jest ona przypisana. Jeśli tak, przypisana jest wartość z prawej strony.

0

Operator ||or ma dwa operandy (lewy i prawy). Sprawdza, czy wartość po lewej jest prawdą, a jeśli tak, to przypisuje ją do zmiennej, w przeciwnym razie przypisuje wartość prawej ręki do zmiennej.

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