2014-03-27 28 views
1

(第一計算器後) 這是一個JavaScript的問題,但我認爲邏輯適用的任何地方縮短倍數。如果條件相同的變量

我想了很久關於if語句使用比較多值,而不需要每次輸入變量;特別是關於「大於」和「小於」。

我試圖解決的具體例子是:

var middle = 5; 
if(middle < 10 && middle > 0) { 
    //some stuff 
} 

我在尋找類似:

var middle = 5; 
if(middle (< 10 && > 0)) { 
    //the same stuff 
} 

我已經檢查is-there-a-way-to-shorten-the-condition-if-it-always-compares-to-the-same-thingif-statements-matching-multiple-valuesif-statement-multiple-conditions-same-statement。 我不能從我的具體問題得出一個簡單的答案。

最後一點:我不想創建一個新的「multiple if」函數來接受參數,然後將它們作爲變量進行比較。我正在尋找一種「內置」方式來做到這一點。

感謝, - 查爾斯

+0

你實際需要多少次範圍綁定比較?通常只有兩個是必要的。 – zzzzBov

+4

沒有這樣的方式。你可以編寫一個返回布爾值的封裝函數,但是你仍然必須將邏輯寫出來。 – Nit

+0

呃......經過一些(失敗的)嘗試後,我確定它不像我想在不使用eval()的情況下製作包裝函數那麼簡單。 這方面的任何提示問題? – goodguy5

回答

4

PythonCoffeescript(!它編譯成JS)有些語言有鏈比較

if (0 < middle < 10) 

但是,Javascript沒有有這些。就像你已經做的那樣,你需要兩次引用這個變量:

if (0 < middle && middle < 10) 
+0

謝謝,Bergi。那是我正在尋找的信息。 – goodguy5

0

我要尋找一個「內置」的方式來做到這一點。

Javascript不支持此功能。事實上,大多數語言都不是,Python是我現在唯一能想到的唯一着名例子(那裏可以寫0 < middle < 10)。

在Javascript中,你能做的最好是使用較短的變量名

if(0 <= x && x < 10) 

或抽象的共同測試分爲功能

if(between(0, x, 10)) 
+0

這是4個字符,甚至沒有計算空白! :D –

+0

它只有四個字符,因爲'x'很短。如果你的變量是10個字符,那麼它會開始明顯縮短。 – goodguy5

1

我不相信這是可能的,對於一個邏輯操作員需要操作員的雙方評估爲真或假。

如果您缺少一側,則無法評估該語句。

0

權,不這樣做,只是爲了它的緣故:

if (Math.min(10, Math.max(0, middle)) == middle) { 
    // middle is between 0 and 10 
}