2014-06-18 28 views
2

我在javascript應用程序的代碼行下面找到了。什麼是「對象|| {}」在JavaScript中的含義?

var auth = parent.auth = parent.auth || {}; 

我知道有哪些擴展與權威性對象現有對象的父,但我不明白什麼是parent.auth || {}在這裏做。

+1

'變種newVar =假|| null || true'會將'true'分配給'newVar'。邏輯或運算符用於防止分配_falsy_值。如果'parent.auth'是虛假的,或者不存在,則分配新的對象文字 –

+0

相關:[構造x = x || y是什麼意思?](http://stackoverflow.com/questions/2802055/what-does-the-construct-xxy-mean/) –

回答

6

parent.auth || {}表示如果parent.auth未定義,在布爾情況下爲null或false,則新的空對象將被初始化並分配。

,或者你可以把它理解這樣的:

var auth; 
if(parent.auth){  
    auth=parent.auth; 
} else { 
    auth={}; 
} 
+1

或0,或「」或NaN ... – sp00m

+1

@ sp00m第二種方法解釋一樣。 CLEARLY! –

+0

@Mr_Green你的意思是?我只想添加0,「」或NaN將被評估爲false(即falsy)以及null,false或undefined。 – sp00m

0

||是或,如果parent.auth未定義,代碼將返回一個空對象。

就像檢查null,然後創建一個新的對象,如果null(來自java/c#)。

3

這意味着如果parent.auth值爲falsy(假的,0,NULL,undefied等),然後分配值{}(空物體)到可變auth

+0

但爲什麼parent.auth被分配兩次 –

+0

@Sandeepvashisth這是因爲'parent.auth'的值本身被更新爲空對象,如果它是一個虛假值...所以一旦語句執行' parent.auth'將有一個非falsy值 –

+0

@Sandeepvashisth也許讀[運算符優先級](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence)有助於理解這個更好? – Teemu