2011-08-04 17 views
1

我不明白爲什麼this.array[0]等於1 if this.array[0] = [(2,1)]? Javascript如何處理2以及如何達到/使用它?圓括號如何在數組內工作?圓括號如何在數組中工作? (javascript)

如果布爾值之前爲真或假,我想用X做不同的事情。 this.array[0] = [(true, X)]this.array[0] = [(false, X)]

回答

5

括號在這方面,作爲與最後一個項目的聲明是通過所傳遞的價值。

換句話說:

(2, 1) === 1 

2進行評估,但是,這樣:

(foo(), bar()) 

有效地做:

foo(); 
return bar(); 

你想在這種情況下,什麼是[ 2,1]

1

我想你想要array[0] = [2,1]

2

如果您在圓括號內使用逗號運算符,它將評估這兩個項目並返回第二個項目。這是很少使用,但也有使用逗號運算符將兩個規範的原因:

  • 循環邏輯

您可以用逗號有更復雜的登錄在一個循環中,像這樣:

在條件
for (var i = 0, j = 10; i < a && j > b; i++, j--) { } 
  • 副作用

您可以用逗號評估條件,如在此之前執行語句:

if (DoX(), CheckIfXHasBeenDoneSuccessfully()) { } 

除此之外,逗號運算基本上是白開水。在括號(2,1)中,2和1都被評估,2被忽略,1被返回。您可以在數組中使用圓括號,但幾乎不會將逗號放在圓括號內。

我相信你想是這樣的:

var bool = true; //or false, if you like 
if(bool){ this.array[0] = X } 
else { this.array[0] = Y } 
0

在JavaScript中,表達式

(2, 1) 

評估爲1。在括號將其轉化爲數組之前,括號會使表達式2, 1得到評估。

你真正想要

this.array[0] = [false, X]; 
2

它不是括號,其令人難以置信的神祕逗號。逗號將會做什麼,它會依次評估每個表達式,並返回最後一個表達式的結果。

您的代碼段可能是一個錯誤,或者某人是一個屁股。它是那種僅僅很少有用的東西,甚至在那些時候也許不應該使用,因爲它對人們有多混亂。

相關問題