We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
本文为读 lodash 源码的第三百六十六篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
import baseRange from './baseRange.js' import toFinite from '../toFinite.js'
lodash源码分析之baseRange
lodash源码分析之toFinite
createRange 用来创建一个生成范围数组的函数,接收一个参数 fromRight ,如果 fromRight 为 true ,所创建的函数生成的范围数组从大到小排序。
createRange
fromRight
true
源码如下:
function createRange(fromRight) { return (start, end, step) => { start = toFinite(start) if (end === undefined) { end = start start = 0 } else { end = toFinite(end) } step = step === undefined ? (start < end ? 1 : -1) : toFinite(step) return baseRange(start, end, step, fromRight) } }
其实返回的函数,最终会调用 baseRange 来实现,但是在调用之前,会对参数进行合规化处理。
baseRange
先是调用 toFinite 来确保 start 为有限数字。
toFinite
start
如果 end 为 undefined ,则将 start 赋值给 end ,并将 start 设置为 0 ,这种情况下生成的数组中的数值范围在 0 - start 之间。
end
undefined
0
0 - start
如果有传 end ,也调用 toFinite 将 end 转换成有限数字。
如果 step 没传,则判断 start 是否比 end 小,如果是,则 step 默认为 1 ,否则为 -1 ,因为 start 比 end 大时,需要的是递减数组。
step
1
-1
如果有传,则调用 toFinite 确保 step 为有限数字。
最终调用 baseRange 来创建数组。
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered:
No branches or pull requests
本文为读 lodash 源码的第三百六十六篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
依赖
lodash源码分析之baseRange
lodash源码分析之toFinite
源码分析
createRange
用来创建一个生成范围数组的函数,接收一个参数fromRight
,如果fromRight
为true
,所创建的函数生成的范围数组从大到小排序。源码如下:
其实返回的函数,最终会调用
baseRange
来实现,但是在调用之前,会对参数进行合规化处理。处理start和end
先是调用
toFinite
来确保start
为有限数字。如果
end
为undefined
,则将start
赋值给end
,并将start
设置为0
,这种情况下生成的数组中的数值范围在0 - start
之间。如果有传
end
,也调用toFinite
将end
转换成有限数字。处理step
如果
step
没传,则判断start
是否比end
小,如果是,则step
默认为1
,否则为-1
,因为start
比end
大时,需要的是递减数组。如果有传,则调用
toFinite
确保step
为有限数字。最终调用
baseRange
来创建数组。License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered: