Was ist das Dollarzeichen in Javascript, wenn nicht jQuery

86

Ich habe vor ein paar Jahren Javascript / jQuery programmiert und gerade wieder angefangen. Damals wurde das Dollarzeichen für alle jQuery-Funktionen verwendet, und wenn keine jQuery-Bibliothek importiert wurde, wurde das Dollarzeichen nicht definiert.

Heute habe ich Firefox in einer völlig leeren HTML-Datei ohne Javascript-Bibliotheken gestartet, und dennoch weist das Dollarzeichen auf etwas hin. Wenn ich die Firefox-Konsole öffne und '$' eingebe, erhalte ich "function()".

1) Ist es richtig, dass vor einigen Jahren kein Dollarzeichen vergeben wurde, oder erinnere ich mich falsch?

2) Was ist das Dollarzeichen , wenn nicht jQuery?

Mads Skjern
quelle

Antworten:

121

1) Ist es richtig, dass vor einigen Jahren kein Dollarzeichen vergeben wurde, oder erinnere ich mich falsch?

Das ist richtig und immer noch wahr.

2) Was ist das Dollarzeichen, wenn nicht jQuery?

Firefox und Chrome implementieren $, $$und mehrere andere als Helfer Befehle. Beide werden $$auf document.querySelectorAll()und gesetzt $, document.querySelectorwenn window.$nicht definiert wurde.

Was Sie also sehen, ist eigentlich kein Standard-JavaScript, sondern ein Helfer in der Entwicklerkonsole Ihres Browsers. Es ist auch nicht jQuery (solange Sie nicht mit jQuery auf einer Seite sind). Es ist jedoch das Verhalten liegt in der Nähe der einen der jQuery, in Bezug auf die querySelector(für einzelne Spiele) und querySelectorAll(für mehrere Ursachen) geben Ihnen fast die gleiche Stärke wie die jQuery - Selektor.

Zeta
quelle
30
OK das ist echt nervig. Es macht es nur verwirrend, weil es so aussieht, als ob jquery da ist, aber man kann es nirgendwo finden. Ich denke, sobald Sie wissen, dass das so ist, könnte es praktisch sein, aber es ist wirklich nur verwirrend und könnte Fehler maskieren.
Mike Nelson
Ich bin mir nicht sicher, wann es von anderen Browsern übernommen wurde, aber ich sehe es auch für IE11 und Edge verfügbar.
Isapir
Woher wissen die Leute, ob es sich um eine Abfrage handelt? Angenommen, Sie haben eine große Bibliothek importiert, die möglicherweise einige andere Bibliotheken enthält. Sie möchten wissen, ob die Abfrage vorhanden ist. Bitte helfen Sie.
Martian2049
2
@ Martian2049 Ich denke, echte jQuery würde antworten$.fn.jquery
mb21
2
@Gaspacchio Das sollte eine andere Antwort sein. Beachten Sie jedoch, dass dies in dieser$ Vorlage nicht in einem Vorlagenliteral verwendet wurde .
Zeta
11

Für den Dolmetscher bedeutet dies nichts wie der Unterstrich

Aus der ECMAScript-Spezifikation:

Das Dollarzeichen ($) und der Unterstrich (_) sind an einer beliebigen Stelle in einer Kennung zulässig. Das Dollarzeichen ist nur zur Verwendung in mechanisch generiertem Code vorgesehen.

Sie können auch JavaScript Dollar Sign ($) überprüfen - Wofür ist es?

Per Konvention das Dollarzeichen ($), Unterstrich (_) und sogar einige ASCII - Zeichen sind erlaubt überall in einem JavaScript - Kennung (Quelle verwendet werden soll: Ecma Script - Dokumentation (7.6 Identifiers, ECMA-262, 3. Auflage). Den Dollar Das Zeichen ist nur für die Verwendung in mechanisch generiertem Code vorgesehen. Dies bedeutet, dass wir das Dollarzeichen ($) nicht in unseren Identifikatornamen verwenden möchten, es sei denn, wir schreiben ein Framework. Im Folgenden finden Sie eine Liste der zulässigen Zeichen, die verwendet werden können irgendwo in einem Bezeichnernamen:

IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
UnicodeEscapeSequence
IdentifierPart ::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
UnicodeEscapeSequence

BEARBEITEN:-

Tatsächlich ist die Dollarzeichenfunktion mehr oder weniger de facto zur Abkürzung geworden document.getElementById().

Um meinen Standpunkt zu bestätigen, überprüfen Sie Folgendes :

$ (Selektor)

Gibt ein einzelnes Element zurück, das dem angegebenen CSS-Selektor entspricht. In alten Firebug-Versionen entsprach dies früher document.getElementById .

Rahul Tripathi
quelle
Dieser Blog-Link ist jetzt tot.
Victor Zamanian
Der erste Teil der Antwort ist irrelevant, der zweite Teil ist veraltet und im Kontext moderner Browser falsch.
user4642212
7

Dollar sign($) wurde nicht zugewiesen, aber einige Browser-Add-Funktion für spezielle Verwendung.

Wenn Sie wie Google Chrome $auf der Konsole tippen , wird Folgendes zurückgegeben:

function $(selector, [startNode]) { [Command Line API] }

Diese Funktion wurde für das Google Chrome Developer Tool zugewiesen und erleichtert das Debuggen.

Wenn Sie tippen $('div'), wird Folgendes zurückgegeben:

e.fn.e.init[178]

und schließen Sie jedes divDOM-Objekt ein.

Übrigens, nachdem Sie mit der rechten Maustaste auf das Element geklickt haben, können Sie auf den Bereich von angle.js nach Typ $scopein der Konsole zugreifen

Chen-Tsu Lin
quelle
4

Beachten Sie, dass dies $$nicht ganz der document.querySelectorAllFall ist , da im Gegensatz zu dieser Funktion kein NodeList:

document.querySelectorAll("p") instanceof NodeList // true

$$("p") instanceof NodeList // false

Array.isArray($$("p")) // true

Ist $$(selector)also wirklich eher so Array.from(document.querySelectorAll(selector)). Dies bedeutet, dass Array-Methoden wie mapund Freunde nicht nur forEachverfügbar sind, wenn sie verwendet werden, $$was eigentlich sehr nützlich ist.

user4642212
quelle
1

Es kann alles sein, ebenso $wie ein gültiger Variablenname dollar.

Aus ECMAScript :

Identifier ::
IdentifierName but not ReservedWord

IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart

IdentifierStart ::
UnicodeLetter
$
_ 
\ UnicodeEscapeSequence

Die einfachste Lösung, um zu sehen, was es ist und wo es definiert ist, wäre wahrscheinlich, einen Haltepunkt in diese Zeile einzugeben$() und zu setzen .

Denys Séguret
quelle
1

Um die anderen Antworten hier zu vervollständigen, verwendet MooTools auch $einen Alias ​​für document.getElementById.

Es prüft, ob das $genommen wird und wird dann standardmäßig verwendet document.id.

Sergio
quelle