[英]Javascript Variable with a min and max value
我經常需要一個具有定義的最小值和最大值的變量。 例如,假設我有變量myVariable
其值范圍可以從5到20。如果設置的值大於20,則將值設置為20。如果設置的值小於5,則將值設置為5 。
我在最后添加了一個小例子。 我使用帶有setVal
函數的對象來確保將值設置在范圍之間。
有沒有一種方法可以使此對象的使用更容易? 最好的方法是:
var myValue = new MyValue(2, 20); //min , max
myValue = 40; //myValue is set to 20
myValue = 15; //myValue is set to 15
myValue = -111; //myValue is set to 2
我只是不確定這是否可行?
另外,解決此問題的最有效方法是什么? (因為我將在很多地方使用它,並且會改變很多值)。
這里是上面提到的工作示例的示例:
function MyValue(min, max) { this.val = 0; this.min = min; this.max = max; this.setVal = function(v) { if(v < min) { this.val= min; } else if(v > max) { this.val = max; } else { this.val = v } } } //tests myvalue = new MyValue(2, 10); //create New MyValue with min = 2, max = 10 myvalue.setVal(5); //set 5, 5 is within the range console.log(myvalue.val); //output: 5 myvalue.setVal(12); //set 12, 12 is outside the range console.log(myvalue.val); //output 10 myvalue.setVal(1); //set 1, 1 is outside the range console.log(myvalue.val); //output 2 myvalue.setVal(-25); //set -25, -25 is outside the range console.log(myvalue.val); //output 2
這是您要嘗試的一種方式
function getMinMaxValue(min, max) { let value return { get current() { return value }, set current(val) { if (val > max) value = max else if (val < min) value = min else value = val } } } const value = getMinMaxValue(5, 20) value.current = 1 console.log(value.current)
您需要一個閉包來模擬私有變量:
function MyValue(min, max) {
let value;
return {
get() {
return value;
},
set(newValue) {
value = (newValue < min) ? min : (newValue > max) ? max : newValue;
}
};
}
const value = new MyValue(1, 10)
value.set(5);
value.get(); // 5
value.set(600);
value.get(); // 10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.