似乎null应该等于null。那么为什么呢?
_.every([null], _.identity);
false
_.any([null], _.identity);
false
这个结果更有意义(在我脑海中)
null === _.identity(null);
true
答案 0 :(得分:1)
every
没有做任何比较,只是期望返回一个真值/假值。 null
是假的。来自内置every
的MDN:
每个方法为每个方法执行一次提供的回调函数 元素存在于数组中,直到找到回调返回的元素 假值(转换为a时变为false的值) 布尔)。如果找到这样的元素,则立即采用每种方法 返回false。否则,如果回调为所有人返回了一个真值 元素,每一个都会回归真实。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every
答案 1 :(得分:1)
根据_.every
和_.any
的语义,这些应该出现false
:
<强>语义。强>
_.every(arr, predicate) === true
iff∀x∈arr:predicate(x)
。
true
中的每个元素满足arr
(从表达式到真值的函数)时,表达式的计算结果为predicate
值)。 _.any(arr, predicate) === true
iff∃x∈arr:predicate(x)
。
true
中的至少一个元素满足arr
时,表达式才会计算为predicate
。<强>应用强>
_.every([null], _.identity)
_.identity(null)
null
false
。 _.any([null], _.identity)
[null].some(_.identity)
false
(因为¬∃x∈{null}
:_.identity(x)
)。