Ich sehe ziemlich oft JavaScript mit Variablen, die mit einem Dollarzeichen beginnen. Wann / warum würden Sie eine Variable auf diese Weise voranstellen?
(Ich frage nicht nach der $('p.foo')
Syntax, die Sie in jQuery und anderen sehen, sondern nach normalen Variablen wie $name
und $order
)
Antworten:
In jQuery wird häufig verwendet , um in Variablen gespeicherte jQuery- Objekte von anderen Variablen zu unterscheiden.
Zum Beispiel würde ich definieren:
Ich finde dies sehr hilfreich beim Schreiben von jQuery- Code und mache es einfach, jQuery- Objekte zu sehen , die andere Eigenschaften haben.
quelle
In der 1., 2. und 3. Ausgabe von ECMAScript wurde von der Verwendung von $ -präfixierten Variablennamen ausdrücklich von der Spezifikation abgeraten, außer im Zusammenhang mit automatisch generiertem Code:
In der nächsten Version (der 5. Ausgabe , die aktuell ist) wurde diese Einschränkung jedoch aufgehoben und die obige Passage durch ersetzt
Daher kann das $ -Zeichen jetzt in Variablennamen frei verwendet werden. Bestimmte Frameworks und Bibliotheken haben ihre eigenen Konventionen zur Bedeutung des Symbols, die in anderen Antworten hier angegeben sind.
quelle
$variable
, liegt dies wahrscheinlich daran, dass es ein gesamtes jQuery-Objekt enthält.Wie andere bereits erwähnt haben, soll das Dollarzeichen von mechanisch generiertem Code verwendet werden. Diese Konvention wurde jedoch von einigen äußerst beliebten JavaScript-Bibliotheken verletzt. JQuery, Prototype und MS AJAX (AKA Atlas) verwenden dieses Zeichen in ihren Bezeichnern (oder als vollständige Bezeichner).
Kurz gesagt, Sie können das verwenden,
$
wann immer Sie möchten. (Der Dolmetscher wird sich nicht beschweren.) Die Frage ist, wann Sie es verwenden möchten ?Ich persönlich benutze es nicht, aber ich denke, seine Verwendung ist gültig. Ich denke, MS AJAX verwendet es, um anzuzeigen, dass eine Funktion ein Alias für einen ausführlicheren Aufruf ist.
Zum Beispiel:
Das scheint eine vernünftige Konvention zu sein.
quelle
Im Kontext von AngularJS wird das
$
Präfix nur für Bezeichner im Code des Frameworks verwendet. Benutzer des Frameworks werden angewiesen, es nicht in ihren eigenen Kennungen zu verwenden:Quelle: https://docs.angularjs.org/api
quelle
Ich war die Person, die diese Konvention im Jahr 2006 ins Leben gerufen und auf der frühen jQuery-Mailingliste beworben hat. Lassen Sie mich also einen Teil der Geschichte und Motivation darüber teilen.
Die akzeptierte Antwort gibt dieses Beispiel:
Aber das zeigt es nicht wirklich gut. Auch ohne die hätten
$
wir hier noch zwei verschiedene Variablennamenemail
undemail_field
. Das ist genau dort genug gut. Warum sollten wir einen$
in einen der Namen werfen müssen, wenn wir bereits zwei verschiedene Namen haben?Eigentlich hätte ich
email_field
hier aus zwei Gründen nicht verwendet :names_with_underscores
Sind kein idiomatisches JavaScript undfield
machen für ein DOM-Element keinen Sinn. Aber ich bin der gleichen Idee gefolgt.Ich habe ein paar verschiedene Dinge ausprobiert, darunter etwas, das dem Beispiel sehr ähnlich ist:
(Natürlich kann ein jQuery-Objekt mehr als ein DOM-Element haben, aber der Code, an dem ich gearbeitet habe, hatte viele
id
Selektoren, sodass in diesen Fällen eine 1: 1-Entsprechung bestand.)Ich hatte einen anderen Fall, in dem eine Funktion ein DOM-Element als Parameter erhielt und dafür auch ein jQuery-Objekt benötigte:
Nun, das ist ein bisschen verwirrend! In einem meiner Codebits
email
befindet sich das jQuery-Objekt undemailElement
das DOM-Element, in dem anderenemail
das DOM-Element undemailJQ
das jQuery-Objekt.Es gab keine Konsistenz und ich mischte sie weiter. Außerdem war es ein bisschen lästig, immer wieder zwei verschiedene Namen für dasselbe zu erfinden: einen für das jQuery-Objekt und einen für das passende DOM-Element. Außerdem
email
,emailElement
undemailJQ
behielt ich auch andere Variationen zu versuchen.Dann bemerkte ich ein gemeinsames Muster:
Da JavaScript
$
einfach als ein weiterer Buchstabe für Namen behandelt wird und ich bei einem$(whatever)
Aufruf immer ein jQuery-Objekt zurückbekommen habe , ist mir das Muster endlich aufgefallen. Ich könnte einen$(...)
Anruf entgegennehmen und nur einige Zeichen entfernen, und es würde sich ein ziemlich schöner Name ergeben:Strikeout ist nicht perfekt, aber Sie könnten auf die Idee kommen: Wenn einige Zeichen gelöscht werden, sehen beide Zeilen wie folgt aus:
Da wurde mir klar, dass ich keine Konvention wie
emailElement
oder erfinden mussteemailJQ
. Es gab bereits eine nette Konvention, die mich anstarrte: Nehmen Sie einige Charaktere aus einem$(whatever)
Anruf heraus und es wird zu$whatever
.und:
Ich musste also nicht immer zwei verschiedene Namen erfinden, sondern konnte nur denselben Namen mit oder ohne
$
Präfix verwenden. Und das$
Präfix war eine nette Erinnerung daran, dass ich es mit einem jQuery-Objekt zu tun hatte:oder:
quelle
Stevo hat recht, die Bedeutung und Verwendung des Dollar-Skriptzeichens (in Javascript und der jQuery-Plattform, jedoch nicht in PHP) ist vollständig semantisch. $ ist ein Zeichen, das als Teil eines Bezeichnernamens verwendet werden kann. Darüber hinaus ist das Dollarzeichen vielleicht nicht das "seltsamste", was Sie in Javascript antreffen können. Hier einige Beispiele für gültige Bezeichnernamen:
Alle obigen Beispiele funktionieren.
Versuch sie.
quelle
Das $ -Zeichen hat für die JavaScript-Engine keine besondere Bedeutung. Es ist nur ein weiteres gültiges Zeichen in einem Variablennamen wie az, AZ, _, 0-9 usw.
quelle
$
in JavaScript keine besondere Bedeutung. Zeitraum.Da
_
am Anfang eines Variablennamens häufig eine private Variable angegeben wird (oder mindestens eine, die privat bleiben soll), finde ich es$
praktisch, generische Codebibliotheken vor meinen eigenen kurzen Aliasnamen hinzuzufügen.Wenn ich zum Beispiel jQuery verwende, bevorzuge ich die Variable
$J
(anstatt nur$
) und die Verwendung$P
von php.js usw.Das Präfix unterscheidet es visuell von anderen Variablen wie meinen eigenen statischen Variablen, was mich darauf hinweist, dass der Code Teil einer Bibliothek oder einer anderen ist und andere weniger wahrscheinlich in Konflikt geraten oder verwirren, sobald sie die Konvention kennen.
Der Code wird auch nicht unübersichtlich (oder erfordert zusätzliche Eingabe), ebenso wenig wie ein vollständig angegebener Name, der für jeden Bibliotheksaufruf wiederholt wird.
Ich stelle mir das gerne so vor, wie es Modifizierertasten tun, um die Möglichkeiten einzelner Tasten zu erweitern.
Dies ist jedoch nur meine eigene Konvention.
quelle
Wie ich in den letzten 4 Jahren erlebt habe, kann jemand leicht erkennen, ob die Variable auf einen Wert / ein Objekt oder ein mit jQuery umschlossenes DOM-Element verweist
Wenn ich im obigen Beispiel die Variable "$ dataDiv" sehe, kann ich leicht sagen, dass diese Variable auf ein mit jQuery umschlossenes DOM-Element verweist (in diesem Fall ist es div). Außerdem kann ich alle jQuery-Methoden aufrufen, ohne das Objekt erneut zu verpacken, z. B. $ dataDiv.append (), $ dataDiv.html (), $ dataDiv.find () anstelle von $ ($ dataDiv) .append ().
Hoffe es hat geholfen. Abschließend möchte ich sagen, dass es eine gute Praxis ist, dies zu befolgen, aber nicht obligatorisch.
quelle
${varname}
ist nur eine Namenskonvention, mit der jQuery-Entwickler Variablen unterscheiden, die jQuery-Elemente enthalten.In Plain
{varname}
werden allgemeine Inhalte wie Texte und Zeichenfolgen gespeichert.${varname}
enthält von jQuery zurückgegebene Elemente.Sie können einfach verwenden
{varname}
, um jQuery-Elemente zu speichern, aber wie ich am Anfang sagte, unterscheidet es dies von den einfachen Variablen und erleichtert das Verständnis erheblich (stellen Sie sich vor, Sie verwechseln es mit einer einfachen Variablen und suchen überall, um zu verstehen, was es enthält). .Beispielsweise :
Hier speichert blah ein zurückgegebenes jQuery-Element.
Wenn jemand anderes das
$blah
im Code sieht , wird er verstehen, dass es sich nicht nur um eine Zeichenfolge oder eine Zahl handelt, sondern um ein jQuery-Element.quelle
Sie können es einfach zum Präfixieren Ihrer Bezeichner verwenden, es soll jedoch für generierten Code verwendet werden, z. B. für Ersatz-Token in einer Vorlage.
quelle
Winkelverwendungen gelten für Eigenschaften, die vom Framework generiert werden. Vermutlich folgen sie dem (inzwischen nicht mehr existierenden) Hinweis des ECMA-262 3.0.
quelle
$ wird verwendet, um bei normalen Variablen zwischen allgemeinen Variablen und jquery-Variablen zu unterscheiden. Wenn Sie eine Bestellung in FLIPKART aufgeben, wird die Bestellung, wenn es sich um eine Variable handelt, die Ihnen die Zeichenfolgenausgabe anzeigt, einfach als "Bestellung" bezeichnet. Wenn wir jedoch auf "Bestellung aufgeben" klicken, wird ein Objekt zurückgegeben, das mit $ als "$" bezeichnet wird order ", damit der Programmierer die Javascript-Variablen und jquery-Variablen im gesamten Code herausschneiden kann.
quelle
Wenn Sie das Dollarzeichen ($) oder das doppelte Dollarzeichen ($$) sehen und neugierig sind, was dies im Prototyp-Framework bedeutet, finden Sie hier Ihre Antwort:
Quelle:
http://www.prototypejs.org/api/utility/dollar-dollar
quelle
Der Grund, warum ich manchmal PHP-Namenskonventionen mit Javascript-Variablen verwende: Bei der Eingabeüberprüfung möchte ich genau die gleichen Algorithmen sowohl auf der Clientseite als auch auf der Serverseite ausführen. Ich möchte wirklich, dass die beiden Seiten des Codes so ähnlich wie möglich aussehen, um die Wartung zu vereinfachen. Die Verwendung von Dollarzeichen in Variablennamen erleichtert dies.
(Außerdem helfen einige vernünftige Hilfsfunktionen dabei, den Code ähnlich aussehen zu lassen, z. B. das Umschließen von Eingabewert-Lookups, Nicht-OO-Versionen von strlen, substr usw. Es sind jedoch noch einige manuelle Anpassungen erforderlich.)
quelle
Eine gültige JavaScript-Kennung muss mit einem Buchstaben, einem Unterstrich (_) oder einem Dollarzeichen ($) beginnen. Nachfolgende Zeichen können auch Ziffern (0-9) sein. Da bei JavaScript zwischen Groß- und Kleinschreibung unterschieden wird, enthalten Buchstaben die Zeichen "A" bis "Z" (Großbuchstaben) und die Zeichen "a" bis "z" (Kleinbuchstaben).
Details:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variables
quelle