Was bedeutet das Zeichen "$" in JavaScript?

167

Im folgenden JavaScript-Code gibt es ein Dollarzeichen ( $). Was heißt das?

$(window).bind('load', function() {
    $('img.protect').protectImage();
});
Coderex
quelle
1
Siehe auch: stackoverflow.com/a/553734/43615 (Warum sollte eine JavaScript-Variable mit einem Dollarzeichen beginnen?)
Thomas Tempelmann

Antworten:

284

Ihr Codeausschnitt sieht aus, als würde er auf Methoden aus einer der gängigen JavaScript-Bibliotheken (jQuery, ProtoType, mooTools usw.) verweisen.

Die Verwendung $in JavaScript ist nicht mysteriös . $ist einfach eine gültige JavaScript-Kennung.

JavaScript erlaubt Groß- und Kleinbuchstaben, Zahlen und $und _. Das $sollte für maschinengenerierte Variablen (wie $0001) verwendet werden.

Prototyp-, jQuery- und die meisten Javascript-Bibliotheken verwenden das $als primäres Basisobjekt (oder Funktion). Die meisten von ihnen haben auch die Möglichkeit, auf das zu verzichten, $damit es mit einer anderen Bibliothek verwendet werden kann, die es verwendet. In diesem Fall verwenden Sie jQueryanstelle von $. In der Tat $ist nur eine Abkürzung für jQuery.

Nosredna
quelle
2
@Paolo: Ich weiß nicht genau was du meinst. (Meins war früher die akzeptierte, nehme ich an.) Nun, ich dachte, meine war zumindest völlig korrekt. Dies beinhaltet ein paar zusätzliche Informationen, aber ich bin nicht sicher, ob es das "Viel" rechtfertigt ...
Noldorin
1
@Noldorin: Zusatzinformationen sind eine gute Sache. In Ihrer Frage wurde absolut nicht erwähnt, warum $ verwendet wurde, warum es verwendet werden konnte und dass jQuery nur eine von vielen Bibliotheken ist, die es verwenden. Wenn Sie es als akzeptierte Antwort haben, ist es die bestmögliche Antwort auf eine Frage, und das war es nicht.
Paolo Bergantino
+1 Es ist zuerst eine gültige JavaScript-Kennung und wird von JavaScript-Frameworks häufig als zweiter Alias ​​verwendet.
Gumbo
@Paolo: Oft ja. Es gab jedoch keinen Hinweis darauf, dass das OP dies wissen wollte. Eine direkte Antwort ist auch eine gute Sache. :) Wenn ich das sage, würde ich immer noch zustimmen, dass dies eine bessere Antwort ist. Mein einziger Streitpunkt war die Betonung, die Sie auf einen bestimmten Punkt legten.
Noldorin
2
Übrigens habe ich in meinem Beitrag hier einen kleinen Überblick über
SolutionYogi
44

Aus einer anderen Antwort :

Eine kleine Geschichte

Denken Sie daran, es gibt nichts Besonderes an sich $. Es ist ein Variablenname wie jeder andere. Früher haben Benutzer Code mit document.getElementById geschrieben. Da bei JavaScript zwischen Groß- und Kleinschreibung unterschieden wird, war es normal, beim Schreiben einen Fehler zu machen document.getElementById. Soll ich Kapital 'b'von 'by'? Soll ich Hauptstadt 'i'von Id?dir bekommen die Drift. Da Funktionen in JavaScript erstklassige Bürger sind, können Sie dies immer tun:

var $ = document.getElementById; //freedom from document.getElementById!

Als die Prototypbibliothek ankam, benannten sie ihre Funktion, die die DOM-Elemente erhält, als '$'. Fast alle JavaScript-Bibliotheken haben diese Idee kopiert. Der Prototyp führte auch eine $$Funktion zum Auswählen von Elementen mithilfe des CSS-Selektors ein.

jQuery hat auch die $Funktion angepasst , aber erweitert, damit alle Arten von 'Selektoren' akzeptiert werden, um die gewünschten Elemente zu erhalten. Wenn Sie Prototype bereits in Ihrem Projekt verwenden und jQuery einbeziehen möchten, treten Probleme auf, die '$'sich entweder auf die Implementierung von Prototype oder auf die Implementierung von jQuery beziehen können. Aus diesem Grund verfügt jQuery über die Option noConflict, sodass Sie jQuery in Ihr Projekt aufnehmen können, das Prototype verwendet, und Ihren Code langsam migrieren können. Ich denke, das war ein brillanter Schachzug von John! :) :)

SolutionYogi
quelle
10
var $ = document.getElementById;funktioniert nicht in Firefox oder Google Chrome. Sie sollten function $(id) { return document.getElementById(id); }stattdessen verwenden. Weitere Informationen finden Sie unter stackoverflow.com/questions/1007340 .
Grant Wagner
Das wusste ich nicht, danke Grant. Ich kann bestätigen, dass dies sowohl in IE6 als auch in Firefox 2 funktioniert hat, da ich diese Technik häufig verwendet habe. Ich werde meinen Hauptbeitrag aktualisieren.
SolutionYogi
42

Das ist höchstwahrscheinlich jQuery Code (genauer gesagt JavaScript, das die jQuery-Bibliothek verwendet).

Das $stellt die jQuery-Funktion dar und ist eigentlich ein Kurzalias für jQuery. (Im Gegensatz zu den meisten Sprachen ist das $Symbol nicht reserviert und kann als Variablenname verwendet werden.) Es wird normalerweise als Selektor verwendet (dh als Funktion, die eine Reihe von im DOM gefundenen Elementen zurückgibt).

Noldorin
quelle
3
Sie sollten hinzufügen, dass $ genau wie x ist, es könnte alles sein, was Sie ihm zuweisen
hasen
Was bedeutet dieser Code: $ input.prop ('type') == 'radio';
OKGimmeMoney
21

Wie alle anderen Antworten sagen; es kann fast alles sein, ist aber normalerweise "JQuery".

In ES6 ist es jedoch ein String-Interpolationsoperator in einer Vorlage "Literal", z.

var s = "new" ; // you can put whatever you think appropriate here.
var s2 = `There are so many ${s} ideas these days !!` ; //back-ticks not quotes
console.log(s2) ;

Ergebnis:

Es gibt heutzutage so viele neue Ideen !!

Bob
quelle
2
Dies ist eine nützliche Antwort! Es war das, wonach ich gesucht habe, da ich wusste, dass wir weder jQuery noch eine andere Bibliothek hatten. Es ist im Grunde eine Möglichkeit, eine Variable innerhalb einer größeren Zeichenfolge zu drucken, ohne Anführungszeichen und Pluszeichen usw. zu verwenden
Oscar Bravo
4

Zusätzlich zu den obigen Antworten $hat es keine besondere Bedeutung in Javascript, es ist frei, bei der Objektbenennung verwendet zu werden. In jQuery wird es einfach als Alias ​​für das jQuery- Objekt und die Funktion jQuery () verwendet. Es kann jedoch vorkommen, dass Sie es in Verbindung mit einer anderen JS-Bibliothek verwenden möchten, die ebenfalls $ verwendet, was zu einem Namenskonflikt führen würde. Nur aus diesem Grund gibt es in JQuery eine Methode jQuery.noConflict().

Hier ist ein Beispiel aus jQuery- Dokumenten:

<script src="other_lib.js"></script>
<script src="jquery.js"></script>
<script>
$.noConflict();
// Code that uses other library's $ can follow here.
</script>

Alternativ können Sie auch eine solche verwenden

(function ($) {
// Code in which we know exactly what the meaning of $ is
} (jQuery));

Ref : https://api.jquery.com/jquery.noconflict/

Vishnu Mallipudi
quelle
3

Aus der jQuery-Dokumentation, die das jQuery- Kernobjekt beschreibt :

Viele Entwickler stellen dem Namen von Variablen, die jQuery-Objekte enthalten, ein $ voran, um die Unterscheidung zu erleichtern. Diese Praxis ist nicht magisch - sie hilft nur einigen Leuten, den Überblick darüber zu behalten, was verschiedene Variablen enthalten.

Josh Britton
quelle