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