Hak*_*kar 5 javascript numbers nan lodash
我最近遇到了以下代码:
function baseClamp(number, lower, upper) {
if (number === number) {
if (upper !== undefined) {
number = number <= upper ? number : upper;
}
if (lower !== undefined) {
number = number >= lower ? number : lower;
}
}
return number;
}
Run Code Online (Sandbox Code Playgroud)
函数开头的条件很有趣。
if (number === number) {
Run Code Online (Sandbox Code Playgroud)
我在 Chrome 中测试了以下内容:
var number = undefined;
number === number
true
number = null
number === number
true
number = NaN
number === number
false
Run Code Online (Sandbox Code Playgroud)
是number === number简单地检查 NaN 还是还有更多内容?
NaN是 ECMAscript 中唯一不等于自身的值。
这个函数等效Math.min(Math.max(number, lower), upper)并且看起来行为相同。number如果是,它将跳过任何处理NaN。
function baseClamp(number, lower, upper) {
if (number === number) {
if (upper !== undefined) {
number = number <= upper ? number : upper;
}
if (lower !== undefined) {
number = number >= lower ? number : lower;
}
}
return number;
}
function mathClamp(number, lower, upper) {
return Math.min(Math.max(number, lower), upper);
}
console.log([-10, 0, 10, NaN].map(it => [baseClamp(it, 0, 10), mathClamp(it, 0, 10)]));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
255 次 |
| 最近记录: |