Underscore.js
# Underscore.js

Underscore.js oder kurz Underscore (für engl. Unterstrich) ist eine freie JavaScript-Bibliothek mit Hilfsfunktionen für alltägliche JavaScript-Aufgaben. Es wurde 2009 von Jeremy Ashkenas (Backbone.js, CoffeeScript) als Werkzeugsammlung für Container-Operationen auf Arrays und Objekten sowie von JavaScript-Funktionen geschaffen. Der Name der Bibliothek rührt vom für sie reservierten globalen Objekt _ (Underscore ist englisch für das Zeichen Unterstrich) analog zum Objekt $ in jQuery her.
Underscore folgt dem Paradigma der funktionalen Programmierung und baut komplexe Operationen durch Komposition einfacher Funktionen auf. Dafür verzichtet es auf die ansonsten in JavaScript oft genutzte Erweiterung der Objekt-Prototypen zugunsten einer durchgehenden Hilfsklassen-Semantik.

## Browser-Kompatibilität

Zur Prüfung der Browser-Kompatibilität steht eine eigene Test-Suite bereit, die eine Kompatibilität zu Internet Explorer ab Version 6.0 sowie Chrome 28/34, Opera 12/20 und Firefox 22/28 ergab (getestet mit Version 1.5.1 resp. 1.6.0 auf Windows 7 64 Bit respektive mit IETester).
Zur Sicherung der bestmöglichen Performance werden Underscore-intern aktuelle Sprachelemente eingesetzt, sofern diese auf der jeweiligen Plattform vorhanden sind. So delegierte beispielsweise die Funktion _.each bis Release 1.6.0 an die native Umsetzung von Array.prototype.forEach, sofern diese existiert, und stellte ansonsten eine eigene Implementierung bereit – seit Release 1.7.0 werden die Array-Methoden durchgängig neu implementiert.

## Alternativen

Seit 2009 besteht das Projekt Lodash und stellt eine Übermenge der von Underscore.js angebotenen Funktionalität bereit.

## Trivia

Die Dokumentation beschreibt Underscore so:
   “Underscore is a utility-belt library… the tie to go along with jQuery’s tux, and Backbone.js’s suspenders.”
   „Underscore ist eine Werkzeuggürtel-Bibliothek,… der zum jQuery-Smoking passende Binder (Schlips) und Tragband (Hosenträger) für Backbone.js.“