_(variable_name)在javascript中的含义是什么?

What does _(variable_name) mean in javascript?

我遇到了以下javascript代码:

1
2
3
4
5
6
7
this.removeEdge = function(source, target) {
  if(!_states[source]) return;

  var children = _states[source].children,
      index = _(children).indexOf(target);
  if(index !== -1) children.splice(index, 1);
};

孩子是什么意思?


_在javascript中是一个有效的变量标识符,理论上可以引用任何东西。在函数语法中使用_(...)意味着_是一个函数。

也就是说,它通常被underline.js库使用,但是如果您查看的是小型代码,它很可能被用作另一个单字符变量名,以保存在文件大小上。

在您提供的示例中,似乎使用了underline.js将children视为集合,以便可以将indexOf函数应用于集合。这类似于呼叫:

1
_.indexOf(children, target);


来找这个问题的答案,并设法找到了一个。_uuu(variable)语句将下划线环绕在变量周围。根据"面向对象和功能样式"部分中的链接,

1
index = _(children).indexOf(target);

等于

1
index = _.indexOf(children, target);

第一种是以面向对象的方式编写的,它允许链接函数。其示例如下:

1
2
3
4
5
_(lyrics).chain()
  .map(function(line) { return line.words.split(' '); })
  .flatten()
  .reduce({}, function(counts, word) {
    counts[word] = (counts[word] || 0) + 1;

每个函数都返回包装歌词的下划线函数,允许对歌词变量进行链接操作。

下划线更改日志:

0.4.0-2009年11月7日:现在可以以面向对象的样式调用所有下划线函数,如:u([1,2,3]).map(…);。Marc Andr_Cournoyer提供的原始补丁。包装的对象可以通过多个方法调用链接。添加了一个函数方法,提供了下划线中所有函数的排序列表。