2012-04-27 22 views
23

Olası Çoğalt: Ne JS bu gördük
What does “options = options || {}” mean in Javascript?İki boru sembolleri (OR)

:

item = item || {}; 

Ben öyle tahmin ediyorum Üçlü bir operatörün bazı varyasyonları ama aslında ne yapar?

+6

biz downvoting ya da sadece genel aptal insanlar bu gece evde bazı JavaScript snobbs alıyorsunuz döndürülür, (ya değerlendirir) döndürülür sonra expr2 bu 0,"",false,null,undefined,NaN biri zaman! ? – benhowdle89

+1

@Martin. ve bu cevabı almak için aramamı önerirsin ... – benhowdle89

+0

iyi soru. Bir süredir aradım ve sonunda [anladım] (http://stackoverflow.com/questions/9579262/logical-operator-in-javascript-0-stands-for-boolean-false). Ama dürüst olmak gerekirse, düşündüğüm kadar kolay değil. Tüm downvotes geri –

cevap

28
(expr1 || expr2) 

"doğru dönüştürülebilir eğer İade expr1, aksi takdirde Expr2 döndürür."

source

Yani expr1 aksi expr1

2

Bu eşittir:

if(!item){ item = {}; } 
+1

Yani öğe FALSE ise, öğe boş bir nesnedir? – benhowdle89

+2

'false' veya' undefined' veya başka bir falsey değeri, evet –

+2

neden bu aşağıya oylanmış oldu? –

7

madde öğesine, set öğeyi, var veya {} Bu fazlalık denir

+4

bir aşağı oy hak etmiyorsun. –

+0

evet cevabı yanlış değildir @Sheikh, ama bence oldukça fakir. Kolink ve ajax'ın burada en iyi cevapları var. Özellikle Kolink, –

+0

@Hee'yi neden hak ediyor? . "Öğe varsa" –

11

olarak ayarlayın, ancak bu durumda iyi bir şey buysa. . item tanımlanmış (veya (Aksi falsy değilse Temelde, false, 0, "" ...), o zaman bunu bir varsayılan değer vermek

En yaygın örnek olaylarda geçerli:

evt = evt || window.event; 
+4

sen hak etmiyorsun bu '0 tümü infers aşağı oy. –