本文为读 lodash 源码的第三百五十一篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
matchesStrictComparable
接收属性 key
和值 srcValue
,返回一个函数,这个函数接收 object
作为参数,并且判断 object
上对应的属性 key
上的值是否和 srcValue
严格相等。
源码如下:
function matchesStrictComparable(key, srcValue) {
return (object) => {
if (object == null) {
return false
}
return object[key] === srcValue &&
(srcValue !== undefined || (key in Object(object)))
}
}
在返回的函数中,如果传入的 object
为 null
或 undefined
,则返回 false
。
接着再判断 object[key]
是否和 srcValue
是否相等,注意,这里使用的是 ===
比较。
在相等后,还有一种情况,传入的值是 undefined
时,刚好 object
上没有对应的属性 key
,这里也能通过 object[key] === srcValue
的检测的,所以还需要将这种情况排除。
因此如果 srcValue !== undefined
,那 object[key]
和 srcValue
相等时,肯定也不会是 undefined
。
如果 srcValue
为 undefined
,则判断 object
上是否有属性 key
,如果有,则认为两者也相等。
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面