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 baseFindIndex from './baseFindIndex.js' import baseIsNaN from './baseIsNaN.js' import strictIndexOf from './strictIndexOf.js'
《lodash源码分析之baseFindIndex中的运算符优先级》
《lodash源码分析之NaN不是NaN》
《lodash源码分析之strictIndexOf 》
function baseIndexOf(array, value, fromIndex) { return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex) }
baseIndexOf 跟数组的 indexOf 方法有两处差别:
baseIndexOf
indexOf
fromIndex
NaN
这个函数是 lodash 的内部函数,将会给 indexOf 函数调用,fromIndex 为负数的情况将会有 indexOf 函数来处理,后续的文章会分析到。
数组的 indexOf 方法,遵循的是 Strict Equality Comparison 的比较方式,因此在查找 NaN 时,返回的都是 -1 。但是 baseIndexOf 会处理 NaN 。
Strict Equality Comparison
-1
在三元表达式中, value === value 的结果为 false 时,则该值是 NaN,调用 baseFindIndex 函数来查找索引,使用 baseIsNaN 函数来作为 baseFindIndex 的比较函数。
value === value
false
baseFindIndex
baseIsNaN
署名-非商业性使用-禁止演绎 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源码分析之baseFindIndex中的运算符优先级》
《lodash源码分析之NaN不是NaN》
《lodash源码分析之strictIndexOf 》
源码分析
baseIndexOf
跟数组的indexOf
方法有两处差别:fromIndex
为负数时的情况NaN
这个函数是 lodash 的内部函数,将会给
indexOf
函数调用,fromIndex
为负数的情况将会有indexOf
函数来处理,后续的文章会分析到。数组的
indexOf
方法,遵循的是Strict Equality Comparison
的比较方式,因此在查找NaN
时,返回的都是-1
。但是baseIndexOf
会处理NaN
。在三元表达式中,
value === value
的结果为false
时,则该值是NaN
,调用baseFindIndex
函数来查找索引,使用baseIsNaN
函数来作为baseFindIndex
的比较函数。License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered: