【发布时间】:2016-11-04 22:27:27
【问题描述】:
假设我正在开发一个导出 clamp() 函数的 JavaScript 库,
将数字限制在给定范围内。
export function clamp(n, min, max) {
return Math.min(Math.max(n, min), max);
}
但是如果min 大于max,这个函数就会失败。有两种解决方案
这似乎是明智的。
首先,函数可以返回NaN:
export function clamp(n, min, max) {
return min <= max ? Math.min(Math.max(n, min), max) : NaN;
}
其次,函数可能会抛出异常:
export function clamp(n, min, max) {
if (min > max) {
throw new RangeError('min may not be greater than max');
}
return Math.min(Math.max(n, min), max);
}
在这种情况下,哪种解决方案最好?
我会尝试回答我自己的问题,但我肯定会接受一个更好的 一个。
【问题讨论】: