2013-10-17 79 views
0

我有相當多的在JavaScript的經驗,但今天我碰到了一段代碼就喜歡本作的第一次:什麼是「||」意味着在JavaScript數組創建?

var _array = _array || []; 
_array.push(['someItem']); 

的sedond線obious,但我沒有任何想法第一行 - 那裏的||是什麼,爲什麼不是var _array = [];呢?

我已經做了一些谷歌的研究,但我沒有得到任何線索這個奇怪的建築真正做什麼。你能開導我嗎?

  • 什麼是奇怪的結構?
  • 那個和簡單數組聲明有什麼區別?
  • 爲什麼會有人使用它?我的眼睛受傷,當我看着那行代碼...

編輯:

我非常清楚,||是一個邏輯OR(以及如何合理OR工作的方式),但我從來沒有見過它以這種方式使用 - 在變量聲明中。

+0

你已經取得了進展,並與代碼打得四處看看發生了什麼事在聲明中? –

+0

@AnthonyForloney是的,我有,但我沒有注意到任何分歧。 –

回答

4

它檢查是否定義了_array,否則它會爲其分配一個數組。基本上是「使用現有的或分配新的」方案。

第二行然後可以安全地運行,因爲_array(大概)是現有數組,或者是新創建的數組,由第一行提供。

2

這意味着or。在這種情況下,您可以將其讀取爲get _array variable or create new empty array if _array doesn't exist

1

這個|字符被稱爲管道。

當用於一對||時,它代表logical OR。 (它在其他語言中也被廣泛使用)。

它會嘗試首先執行最左邊的表達式,如果該表達式的計算結果爲false,則它將執行最正確的表達式。

在我們的案例中,它測試變量_array是否存在,如果它基本上分配_array_array。如果它還不存在,它將初始化爲空數組_array[])。


它也可以被改寫爲一個三元運算符,如:

var _array = _array ? _array : [];