本文为读 lodash 源码的第五十三篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
import toNumber from './toNumber.js'
从方法名上看,toFinite
的作用大体有两个:
- 将
value
转换成number
类型 - 返回有限值
看看源码:
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
}
if (!value) {
return value === 0 ? value : 0
}
falsely
的值全部转换成 0
。
value = toNumber(value)
只需要调用 toNumber
就可以将 value
转换成 number
类型了。
if (value === INFINITY || value === -INFINITY) {
const sign = (value < 0 ? -1 : 1)
return sign * MAX_INTEGER
}
如果转换后的值为正无限值或者负无限值,则将其转换成 js
所能表达的最大的正负值。
value === value ? value : 0
在 js
中,NaN
和 NaN
是不相等的,所以可以用这个来判断一个值是否为 NaN
,如果值为 NaN
,则返回 0
。
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面