Came looking for an answer to this and managed to find one. The _(variable) statement wraps underscore around the variable. According to this link in the "Object-Oriented and Functional Styles" section,
index = _(children).indexOf(target);
is equivalent to
index = _.indexOf(children, target);
The first is written in object-oriented style, which allows chaining of functions. Their example is as follows:
_(lyrics).chain() .map(function(line) { return line.words.split(' '); }) .flatten() .reduce({}, function(counts, word) { counts[word] = (counts[word] || 0) + 1;
Each of these functions returns the underscore function wrapping lyrics, allowing chained manipulation of the lyrics variable.
Underscore changelog:
0.4.0 — November 7, 2009: All Underscore functions can now be called in an object-oriented style, like so: _([1, 2, 3]).map(...);. Original patch provided by Marc-André Cournoyer. Wrapped objects can be chained through multiple method invocations. A functions method was added, providing a sorted list of all the functions in Underscore.
_is a JavaScript identifier, probably for the underscore library in this case._()is a call to a function called.. well.._$, or_. By putting_on the stack as a function type doesn't mean it is not an identifier.