Skip to content

Latest commit

 

History

History
42 lines (26 loc) · 1.86 KB

matchesStrictComparable.md

File metadata and controls

42 lines (26 loc) · 1.86 KB

lodash源码分析之matchesStrictComparable

本文为读 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)))
  }
}

在返回的函数中,如果传入的 objectnullundefined ,则返回 false

接着再判断 object[key] 是否和 srcValue 是否相等,注意,这里使用的是 === 比较。

在相等后,还有一种情况,传入的值是 undefined 时,刚好 object 上没有对应的属性 key ,这里也能通过 object[key] === srcValue 的检测的,所以还需要将这种情况排除。

因此如果 srcValue !== undefined ,那 object[key]srcValue 相等时,肯定也不会是 undefined

如果 srcValueundefined ,则判断 object 上是否有属性 key ,如果有,则认为两者也相等。

License

署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)

最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:

作者:对角另一面