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 isArrayLike from '../isArrayLike.js' import isIndex from './isIndex.js' import isObject from '../isObject.js' import eq from '../eq.js'
lodash源码分析之isArrayLike
lodash源码分析之isIndex
lodash源码分析之isObject
lodash源码分析之eq
isIterateeCall 用来判断传入的 value 、 index 和 object 参数是不是在迭代过程中得到的。
isIterateeCall
value
index
object
源码如下:
function isIterateeCall(value, index, object) { if (!isObject(object)) { return false } const type = typeof index if (type === 'number' ? (isArrayLike(object) && isIndex(index, object.length)) : (type === 'string' && index in object) ) { return eq(object[index], value) } return false }
如果 object 通不过 isObject 的检测,则这三个参数肯定不是在迭代过程中得到的。
isObject
接下来,判断 index 的类型,如果 index 为数字类型,则迭代的可能是数组,因此接着判断 object 能否通过 isArrayLike 的检测,如果能通过,再看 index 能否通过 isIndex 的检测,即 index 是否为正常的数组索引。
isArrayLike
isIndex
如果 index 和 object 的检测都通过了,再判断数组在 index 索引上的值是否和 value 相等,这些检测都通过后,则参数是迭代中产生的。
如果 type 是 string 类型,则 index 必须要为 object 的属性,这个条件满足后,和数组一样,也要判断该属性上的值是否和 value 相等。
type
string
署名-非商业性使用-禁止演绎 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源码分析之isArrayLike
lodash源码分析之isIndex
lodash源码分析之isObject
lodash源码分析之eq
源码分析
isIterateeCall
用来判断传入的value
、index
和object
参数是不是在迭代过程中得到的。源码如下:
如果
object
通不过isObject
的检测,则这三个参数肯定不是在迭代过程中得到的。接下来,判断
index
的类型,如果index
为数字类型,则迭代的可能是数组,因此接着判断object
能否通过isArrayLike
的检测,如果能通过,再看index
能否通过isIndex
的检测,即index
是否为正常的数组索引。如果
index
和object
的检测都通过了,再判断数组在index
索引上的值是否和value
相等,这些检测都通过后,则参数是迭代中产生的。如果
type
是string
类型,则index
必须要为object
的属性,这个条件满足后,和数组一样,也要判断该属性上的值是否和value
相等。License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered: