我遇到了以下javascript代码:
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);
};
_(儿童)是什么意思?
答案 0 :(得分:26)
_
是JavaScript中的有效变量标识符,理论上可以引用任何。使用带有函数语法的_(...)
意味着_
是一个函数。
也就是说,它通常由underscore.js库使用,但是如果你正在查看缩小的代码,它很可能被用作另一个单字符变量名来保存文件大小。
在您提供的示例中,似乎使用underscore.js将children
视为集合,以便indexOf
function可以应用于集合。这与调用类似:
_.indexOf(children, target);
答案 1 :(得分:10)
寻找答案并设法找到答案。 _(变量)语句在变量周围包装下划线。根据“面向对象和功能样式”部分中的this link,
index = _(children).indexOf(target);
相当于
index = _.indexOf(children, target);
第一种是面向对象的风格,它允许链接功能。他们的例子如下:
_(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日: 现在可以在面向对象的样式中调用所有下划线函数,如:_([1,2,3])。map(...);.由Marc-AndréCournoyer提供的原始补丁。可以通过多个方法调用来链接包装的对象。添加了一个函数方法,提供了Underscore中所有函数的排序列表。
答案 2 :(得分:0)
class Book {
constructor(author) {
this._author = author;
}
通常在私有变量的名称前加下划线(_)。但是,这种做法本身并未将变量设为私有。