我在找寫代碼的這麼一點點了一個簡單的方法聲明:簡單的替代增加一倍,如果JavaScript的
if (a > max)
a = max;
if (a < min)
a = min;
是什麼在JavaScript來做到這一點,最簡單的方法?
我在找寫代碼的這麼一點點了一個簡單的方法聲明:簡單的替代增加一倍,如果JavaScript的
if (a > max)
a = max;
if (a < min)
a = min;
是什麼在JavaScript來做到這一點,最簡單的方法?
a = (a > max) ? max : a;
a = (a < min) ? min : a;
甚至
a = (a < min) ? min : (a > max) ? max : a;
我會隨時選擇雙重if語句! (重新編輯:這是一個更好的;)) –
沒有它不容易閱讀,恕我直言。原來也沒有工作。也許我不應該困擾。 – NimChimpsky
我發現括號雖然冗餘,但使三元操作更清晰:a =(a> max)? max:a' –
a = Math.max(min, Math.min(max, a));
如果你希望可讀性那麼這樣的事情可能會更好:
function bounded(val, min, max) {
if (val < min) {
return min;
} else if (val > max) {
return max;
} else {
return val;
}
}
這是很容易理解,因爲一旦冗長是它唯一的定義不是一個主要問題。使用這樣的:
a = bounded(a, 0, 10);
但我不確定這是否更好。調用函數(更慢,即使值在有效範圍內也是兩個函數調用),並且更難以閱讀。 – Thilo
我同意。只是想提出一個替代方案。 –
謝謝你們!想想也許這裏有一個簡寫符號,可能使用三元運算符。我會堅持我所擁有的! – Mansiemans
我覺得代碼是有點難以解釋了幾個原因:兩行
if
而分裂所以我發現下面的壓痕與評論更好,更簡單,更清晰:
// Limit a to the [min,max] interval
if (a > max) a = max;
if (a < min) a = min;
加分點:它使明顯,我們假設分鐘<最大。
爲什麼這對你來說不夠簡單?只是讓它成爲一個功能。 – Ibolit
你想檢查兩個條件一個接一個或檢查第二個條件,如果第一個是假的? –
@哈里:但是如果'max'小於'min'呢? ;-) –