簡體   English   中英

具有最小值和最大值的Javascript變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM