UnderscoreJS _.every表示空值

时间:2015-12-08 05:05:46

标签: javascript underscore.js

似乎null应该等于null。那么为什么呢?

_.every([null], _.identity);
false

_.any([null], _.identity);
false

这个结果更有意义(在我脑海中)

null === _.identity(null);
true

2 个答案:

答案 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) === trueiff∀x∈arr:predicate(x)

  • 换句话说,当且仅当true中的每个元素满足arr(从表达式到真值的函数)时,表达式的计算结果为predicate值)。

_.any(arr, predicate) === trueiff∃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))。