什么" _(项目)"在调用JS函数时做什么?

时间:2017-11-11 00:17:25

标签: javascript underscore.js

这里的Javascript新手。虽然我在JavaScript中学习高阶函数,但我看到以下示例。有人可以在调用.chain()之前解释_(item)做了什么吗?谢谢。

//items is an array with nested objects as elements
var count = _(items).chain()
      .flatten()
      .reduce(.....)
      .value();

1 个答案:

答案 0 :(得分:3)

_(items).chain()相当于_.chain(items)。两者都用于使object-oriented style syntax成为可能,其中方法被链接以对前一结果起作用。因此,您开始使用的第一个值必须以某种方式包装,以便它理解这样的下划线方法。

_(items)自行调用(不含.chain())将为您提供下划线方法,但结果无法进一步链接。 _.chain(items)调用不仅提供对下划线方法的访问,而且还确保此行为继续,允许下划线方法进一步链接。

更改日志有助于理解为什么存在这两种语法:

  

0.4.0 - 2009年11月7日 - 差异 - 文档

     

现在可以以面向对象的方式调用所有下划线函数,如下所示:_([1, 2, 3]).map(...);

     

1.2.4 - 2012年1月4日 - 差异 - 文档

     

您现在可以(并且可能应该,因为它更简单)写_.chain(list)而不是_(list).chain()

因此,您引用的语法是"较旧的"语法。