2013-09-29 48 views
-1

我有在JavaScript中的問題,並想知道是否有可能做這樣的事情或者是一個錯誤:開關罩計算在JavaScript

for (var i = 1; i <= nUnits.length; i++) 
{ 
    switch (true) 
    { 
     case i % fDivisor === 0 && i % bDivisor === 0: //Note the modulus 
      nUnits[i].push("FB"); 
      alert("FB"); 
      break; 
     case i % fDivisor === 0: 
      nUnits[i].push("F"); 
      alert("F"); 
      break; 
     case i % bDivisor === 0: 
      nUnits[i].push("B"); 
      alert("B"); 
      break; 
     default: 
      nUnits[i].push(i); 
      alert(i); 
      break; 
    } 
} 

我一直在尋找各地的網絡,看看如果我可以對這種情況進行計算,但我所看到的只是交換機中的表達式。

我也試過這樣它的變體:

case (((i % fDivisor) === 0) && ((i % bDivisor) === 0)): //Note the modulus 
    nUnits[i].push("FB"); 
    alert("FB"); 
    break; 
case ((i % fDivisor) === 0): 
    nUnits[i].push("F"); 
    alert("F"); 
    break; 

我想知道,如果這其實是有效的語法。

我明白,如果陳述有時可能會更好,但這不是問題。預先感謝您的幫助。

+0

像這樣使用'switch'基本上強姦了語言。它完全無效了'switch'的優點。 –

+1

我正在嘗試瞭解開關盒的正確語法。我已經取得了成功與if。所以再說一次,它的語法是否允許和正確,它看起來不錯或實用。這就是我選擇一個簡單問題的原因。我自己嘗試,我沒有錯誤,但也沒有警報。它什麼都不做。因此,這個問題。 –

+0

如果你想學習'switch'的正確語法(和語義),就不要這樣使用它。這樣做沒有什麼可學習的。通過使用它的例子來學習'switch'。 –

回答

0

我看到有人投票結束這個有效的問題,所以我會回答它,因爲我用它作爲我自己的參考。

另一個人發佈了一個答案,說明這種情況下的語法不正確,不允許。

在該答案的評論中,一張海報提供了一個鏈接到JSFiddle,它證明了這個語法是正確的。這可能不好,但它是允許的。然後發佈答案的人將其刪除。還刪除評論和鏈接。我希望提供鏈接的人在問題結束之前將其作爲答案發布,我會刪除並接受他的答案。

這回答了我的問題。這是:

是「計算」(不是邏輯運算)這樣的情況下允許(不是交換機)。 (注意,問題不在於辯論它是否好)。但是它的語法是否正確,它是否允許?

無論你是否喜歡(這不是一個辯論論壇)......它確實是允許的。