首页 > 解决方案 > “价值!==价值”什么时候是真的?

问题描述

我正在研究对象相等测试函数,并在 Lodash 的“isEqual”函数中遇到了这段代码:

https://bit.dev/lodash/lodash/internal/_base-is-equal/~code

function baseIsEqual(value, other, bitmask, customizer, stack) {
  if (value === other) {
    return true;
  }
  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
    return value !== value && other !== other;
  }
  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
}

TLDR:什么时候会return value !== value && other !== other;返回 true?

难倒我的部分是第二个条件及其返回。显然,第一个条件捕获了简单的严格相等情况。但是,看看下一个测试,我做了以下观察(假设?):

value那么,如果and的唯一值other是原语、未定义、null 或函数,那么哪些值可以满足true返回条件?在 Lodash 中看到这段代码赋予了它可信度,所以我也“假设”它是合法的(“假设”!......是的,我知道......)。

标签: javascript

解决方案


推荐阅读