- 源码
import toNumber from './toNumber.js'
function toFinite(value) {
if (!value) {
return value === 0 ? value : 0
}
value = toNumber(value)
if (value === INFINITY || value === -INFINITY) {
const sign = (value < 0 ? -1 : 1)
return sign * MAX_INTEGER
}
return value === value ? value : 0
}
export default toFinite
在第一个if判断的时候,里面为什么要加一个三元运算符呢??
!value,只有7种情况会为真
- NaN
- null
- undefined
- 0
- -0
- false
- ''
value 肯定要么是等于0,要么就是另外6个啊
直接返回0多简单
为啥要加一个三元运算,为啥为啥为啥??????作者肯定是有他的道理的,奈何目光太短浅了,所以上来请求一下各位
+0 === -0
这样可以保证输入是
-0
的时候,返回也是-0
。