javascript中的差异_()和()

Phi*_*unt 1 javascript backbone.js underscore.js

我一直在使用backbone.js,并遇到了以下代码片段.

    _(view.buttonViews).each(function(button) {
        button.render();
      });
Run Code Online (Sandbox Code Playgroud)

其中view.buttonViews是一个数组.如果我带走_()并拥有

    view.buttonViews.each(function(button) {
        button.render();
      });
Run Code Online (Sandbox Code Playgroud)

然后我得到一个错误,每个都不是一个函数._()添加了什么?谢谢!

Fel*_*ing 11

我想这是提供方法的Underscore.jseach:

_.each(list, iterator, [context]) 别名:forEach
迭代元素列表,依次产生迭代器函数.迭代器绑定到上下文对象(如果传递了一个).每个迭代器调用都使用三个参数调用:(element,index,list).如果list是JavaScript对象,则迭代器的参数将是(value,key,list).如果存在,则委托原生forEach函数.

这种方式,_([...]).each(...)只是另一种调用它的方式.

顺便说一句,它也在Backbone的文档中描述:

Backbone唯一的硬依赖是Underscore.js.


正如@Jonathon已经说过的那样,FWIW _是一个有效的变量名,在这种情况下它包含一个函数.在函数后面添加括号引用该函数的调用,因此_()调用所引用的函数_.没什么特别的.

除此之外,括号可以作为函数声明或表达式(function foo() {...})的一部分出现,也可以作为分组运算符(var i = (20 + 1) * 2;)出现.