lodash clamp函数

730 阅读1分钟

clamp函数,包含number(需要判断的值)upper(上边界)lower(下边界)三个参数。如果number超出上边界或下边界,会返回距离number差值最小的边界值。如果包含在两个边界值中,则返回number

该函数比较简单,但使用场景有待探索。需要了解一下知识点:

  • NaN === NaN // false
  • +'-0' // 0
  • -0 === +0 // true
  • +null // 0
  • +undefined // NaN
  • 待日后补充
function clamp(number, lower, upper) {
  // 传入的数字进行转换
  number = +number
  lower = +lower
  upper = +upper
  // NaN === NaN false
  // NaN === 1 false
  // +null 0
  // +undefined NaN
  // 处理非数字的情况
  lower = lower === lower ? lower : 0
  upper = upper === upper ? upper : 0
  if (number === number) {
    // 和最大边界值比较,超过最大边界值,返回upper
    number = number <= upper ? number : upper
    // 和最小边界值比较,小于最小边界值,返回lower
    number = number >= lower ? number : lower
  }
  return number
}