number/clamp.jsjavascript
/**
* 将数字限制在包含边界的区间内。
* @function clamp
* @memberof module:number
* @param {number} value 要限制的数字
* @param {number} lower 区间下界
* @param {number} upper 区间上界
* @returns {number} 限制后的数字
* @throws {TypeError|RangeError} 参数不是有限数字或边界倒置时抛出
*/
function clamp(value, lower, upper) {
if (![value, lower, upper].every(Number.isFinite)) throw new TypeError('value, lower, and upper must be finite numbers')
if (lower > upper) throw new RangeError('lower must not exceed upper')
return Math.min(Math.max(value, lower), upper)
}
export default clamp