Frage

Ich habe ziemlich Häufig finden Sie unter JavaScript-Variablen, die beginnen mit einem Dollarzeichen.Wann/warum würden Sie wählen, um Präfix eine variable, die in dieser Weise?

(Ich bin nicht zu Fragen $('p.foo') syntax, die Sie sehen in jQuery und andere, aber normale Variablen wie $name und $order)

War es hilfreich?

Lösung

Eine sehr häufige Verwendung in jQuery ist jQuery Objekte in Variablen von anderen Variablen gespeichert zu unterscheiden. Zum Beispiel würde ich definieren

var $email = $("#email"); // refers to the jQuery object representation of the dom object
var email_field = $("#email").get(0); // refers to the dom object itself

Das finde ich sehr hilfreich sein, schriftlich jQuery-Code und macht es einfach jQuery Objekte zu sehen, die einen anderen Satz von Eigenschaften haben.

Andere Tipps

In der 1., 2. und 3rd Edition von ECMAScript wurde $ -prefixed Variablennamen mit explizit vom spec abgeraten, außer im Zusammenhang mit dem automatisch generierten Code:

  

Das Dollarzeichen ($) und der Unterstrich (_) sind überall in einer Kennung zulässig. Das Dollarzeichen ist für die Verwendung nur in mechanisch erzeugten Code.

Doch in der nächsten Version (die 5th Edition , die Strom) ist, wurde diese Einschränkung fallen gelassen, und die obige Passage ersetzt mit

  

Das Dollarzeichen ($) und der Unterstrich (_) sind überall in einer IdentifierName erlaubt.

Als solches kann das $ -Zeichen nun frei in Variablennamen verwendet werden. Bestimmte Frameworks und Bibliotheken haben ihre eigenen Konventionen über die Bedeutung des Symbols in anderen Antworten hier erwähnt.

Wie andere erwähnt haben, die dollar-Zeichen verwendet werden soll, durch mechanisch erzeugte code.Jedoch, die Konvention gebrochen worden, von einigen sehr beliebten JavaScript-Bibliotheken.JQuery, Prototype und MS AJAX (AKA Atlas) verwenden alle diese Zeichen in Ihre Bezeichner (oder als komplette identifier).

Kurz gesagt, Sie verwenden können die $ Wann immer Sie wollen.(Der Dolmetscher wird sich nicht beschweren.) Die Frage ist Wann tun Sie wollen um es zu benutzen?

Ich persönlich verwende es nicht, aber ich denke, seine Verwendung gültig ist.Ich denke, MS AJAX verwendet es, um zu bestätigen, dass eine Funktion ist ein alias für einige weitere ausführliche nennen.

Zum Beispiel:

var $get = function(id) { return document.getElementById(id); }

Das scheint wie eine vernünftige Konvention.

Im Rahmen der AngularJS wird der $ Präfix nur für Bezeichner im Rahmen des Code verwendet. Die Nutzer des Rahmens sind angewiesen, nicht in ihren eigenen Bezeichner zu verwenden:

  

Angular Namespaces $ und $$

     

Um ein versehentliches Namenskollisionen mit Ihrem Code, Angular Präfixe Namen öffentlicher Objekte mit $ und Namen von privaten Objekten mit $$ zu verhindern. Bitte verwenden Sie nicht die $ oder $$ Präfix in Ihrem Code.

Quelle: https://docs.angularjs.org/api

ich war die Person, die im Jahr 2006 diese Konvention wieder entstanden und gefördert es auf der frühen jQuery Mailing-Liste, so lassen Sie mich um sie etwas von der Geschichte und Motivation teilen.

Die akzeptierte Antwort gibt folgendes Beispiel:

var $email = $("#email"); // refers to the jQuery object representation of the dom object
var email_field = $("#email").get(0); // refers to the dom object itself

Aber das ist es nicht wirklich gut veranschaulichen. Auch ohne die $, hätten wir immer noch zwei unterschiedliche Variablennamen hier, email und email_field. Das ist viel genau dort gut. Warum benötigen wir eine $ in einen der Namen zu werfen, wenn wir bereits zwei verschiedene Namen haben?

Eigentlich würde ich nicht email_field hier aus zwei Gründen verwendet: names_with_underscores JavaScript nicht idiomatischen ist, und field nicht wirklich Sinn für ein DOM-Element machen. Aber ich habe die gleiche Idee folgen.

Ich habe versucht, ein paar andere Dinge, darunter etwas sehr ähnlich wie das Beispiel:

var email = $("#email"), emailElement = $("#email")[0];
// Now email is a jQuery object and emailElement is the first/only DOM element in it

(Natürlich ist ein jQuery-Objekt kann mehr als ein DOM-Element, aber der Code, den ich gerade arbeite hatte eine Menge id Selektoren, so in diesen Fällen eine 1 war. Korrespondenz 1)

Ich hatte einen anderen Fall, in dem eine Funktion ein DOM-Element als Parameter empfangen und benötigt auch ein jQuery-Objekt für sie:

// email is a DOM element passed into this function
function doSomethingWithEmail( email ) {
    var emailJQ = $(email);
    // Now email is the DOM element and emailJQ is a jQuery object for it
}

Nun, das ist ein wenig verwirrend! In einem meiner Bit-Code, ist email das jQuery-Objekt und emailElement ist das DOM-Element, aber in der anderen, email ist das DOM-Element und emailJQ ist das jQuery-Objekt.

Es gab keine Konsistenz und ich hielt sie bis zu vermischen. Außerdem war es ein bisschen ein Ärgernis, die zu halten zu bilden zwei verschiedene Namen für die gleiche Sache: ein für das jQuery-Objekt und eine andere für das passende DOM-Element. Neben email, emailElement und emailJQ, hielt ich auch andere Variationen zu versuchen.

Dann bemerkte ich, ein gemeinsames Muster:

var email = $("#email");
var emailJQ = $(email);

Da JavaScript behandelt Namen, wie einfach wieder einen Brief $, und da bekam ich immer ein jQuery-Objekt zurück von einem $(whatever) Aufruf, das Muster dämmerte schließlich auf mir. Ich könnte einen $(...) Anruf nehmen und nur ein paar Zeichen entfernen, und es wäre mit einem hübschen schönen Namen kommen:

$("#email")
$(email)

Gestrichen ist nicht perfekt, aber man kann auf die Idee kommen: mit einigen Zeichen gelöscht, diese beiden Linien am Ende aussehen wie:

$email

Das ist, als ich merkte, ich brauchte nicht eine Konvention wie emailElement oder emailJQ zu bilden. Es war schon eine schöne Konvention und starrt mich an. Nimmt einige Zeichen aus einem $(whatever) Anruf und es verwandelt sich in $whatever

var $email = $("#email"), email = $email[0];
// $email is the jQuery object and email is the DOM object

und

// email is a DOM element passed into this function
function doSomethingWithEmail( email ) {
    var $email = $(email);
    // $email is the jQuery object and email is the DOM object
    // Same names as in the code above. Yay!
}

So habe ich muss nicht alle zwei verschiedene Namen, die Zeit bilden aber nur den gleichen Namen mit oder ohne $ Präfix verwenden könnte. Und der $ Präfix war eine schöne Erinnerung daran, dass ich mit einem jQuery-Objekt zu tun habe:

$('#email').click( ... );

oder:

var $email = $('#email');
// Maybe do some other stuff with $email here
$email.click( ... );

Stevo ist richtig, die Bedeutung und Verwendung der Dollar-Skript-Zeichen (in Javascript und jQuery-Plattform, aber nicht in PHP) ist völlig semantische. $ Ist ein Zeichen, das als Teil eines Bezeichnernamen verwendet werden kann. Darüber hinaus ist das Dollarzeichen vielleicht nicht das „weird“, was Sie in Javascript begegnen können. Hier sind einige Beispiele für gültige Bezeichnernamen:

var _       = function() { alert("hello from _"); }
var \u0024  = function() { alert("hello from $ defined as u0024"); }
var Ø       = function() { alert("hello from Ø"); }
var $$$$$   = function() { alert("hello from $$$$$"); }

Alle Beispiele oben arbeiten.

Sie versuchen.

Das $ -Zeichen hat keine besondere Bedeutung für die JavaScript-Engine. Es ist nur ein weiteres gültiges Zeichen in einem Variablennamen wie a-z, A-Z, _, 0-9, etc ...

Da _ am Anfang der einen Variablen-Namen wird oft verwendet, um anzugeben, dass eine private variable (oder wenigstens einer soll privat bleiben), ich finde $ praktisch für das hinzufügen vor meinen eigenen kurzen Aliase zu generischen code-Bibliotheken.

Zum Beispiel, bei der Verwendung von jQuery, die ich lieber verwenden die variable $J (anstelle von nur $), und verwenden Sie $P bei der Verwendung von php.js etc.

Das Präfix macht es optisch deutlich von anderen Variablen wie meine eigene statische Variablen, cluing mich in die Tatsache, dass der code ist Teil der Bibliothek oder von anderen, und ist weniger wahrscheinlich zu Konflikten oder zu verwirren andere, sobald Sie wissen, dass die Konvention.

Es ist auch nicht die Unordnung der code (oder erfordern extra eingeben) ein vollständig angegeben Namen für jede Bibliothek wiederholt aufrufen.

Ich sehe es ähnlich wie das, was modifier keys tun für die Erweiterung der Möglichkeiten der einzelnen Tasten.

Aber das ist nur meine eigene Konvention.

Als ich für die letzten 4 Jahre erlebt habe, wird es jemand auf einfache Weise feststellen, ob die Variablen einen Wert / Objekt zeigen oder ein jQuery gewickelte DOM-Element

Ex:
var name = 'jQuery';
var lib = {name:'jQuery',version:1.6};

var $dataDiv = $('#myDataDiv');

im obigen Beispiel, wenn ich die Variable „$ dataDiv“ sehen kann ich einfach sagen, dass dieser Variable die auf einen jQuery DOM-Element gewickelt (in diesem Fall ist es div). und auch kann ich alle jQuery Methoden aus rufen Sie das Objekt wieder wie $ dataDiv.append (), $ dataDiv.html (), $ dataDiv.find () statt $ ($ dataDiv) .append () gewickelt wird.

Hoffe, es half kann. so will endlich sagen, dass es eine gute Praxis, dies zu folgen, aber nicht zwingend notwendig.

Während Sie es einfach verwenden können Ihre Bezeichner Präfix, es sollte für generierten Code verwendet werden sollte, wie Ersatz-Token in einer Vorlage, zum Beispiel.

${varname} ist nur eine Namenskonvention jQuery-Entwickler Variablen zu unterscheiden, verwenden, die jQuery Elemente halten.

Plain {varname} dient zum Speichern allgemeine Stoffe wie Texte und Streicher. ${varname} hält Elemente zurück von jQuery.

Sie können die Ebene {varname} verwenden jQuery Elemente als auch zu speichern, aber wie ich am Anfang sagte, dies unterscheidet sie von den einfachen Variablen und macht es viel einfacher zu (man stelle sich zu verstehen, ist es für eine reine Variable verwirrend und alle über die Suche zu verstehen, was es hält).

Zum Beispiel:

var $blah = $(this).parents('.blahblah');

Hier blah ist ein zurück jQuery Element zu speichern.

Also, wenn jemand anderes die $blah im Code sehen, sie werden verstehen, es ist nicht nur ein String oder eine Zahl, es ist ein jQuery-Element.

Angular verwendet, ist für vom Framework erzeugt Eigenschaften. Erraten Sie, sie durch die (inzwischen aufgelösten) Hinweis von der ECMA-262 3.0 bereitgestellt werden.

$ wird verwendet, zwischen dem gemeinsamen Variablen und jquery Variablen bei normalen Variablen zu unterscheiden. lassen Sie einen Auftrag in Flipkart setzen dann, wenn der Auftrag eine Variable Sie die Zeichenfolge Ausgabe zeigt dann wird es einfach als „Ordnung“ genannt, aber wenn wir auf Platz klicken, um dann ein Objekt, das Objekt zurückgegeben wird von $ als „$ bezeichnet werden Ordnung“, so dass der Programmierer kann in der Lage, die JavaScript-Variablen und jquery Variablen im gesamten Code schnippeln aus.

Wenn Sie das Dollarzeichen ($) oder doppelte Dollarzeichen ($$) zu sehen, und sind gespannt, was das bedeutet in dem Prototype Rahmen, hier ist die Antwort:

$$('div');
// -> all DIVs in the document.  Same as document.getElementsByTagName('div')!

$$('#contents');
// -> same as $('contents'), only it returns an array anyway (even though IDs must be unique within a document).

$$('li.faux');
// -> all LI elements with class 'faux'

Quelle:
http://www.prototypejs.org/api/utility/dollar-dollar

Der Grund, warum ich manchmal php Name-Konventionen mit JavaScript-Variablen verwenden: Wenn die Eingabevalidierung tun, mag ich die exakt gleiche Algorithmen sowohl die Client-Seite ausgeführt werden, und die Server-Seite. Ich möchte wirklich die beiden Seitencode so ähnlich wie möglich suchen, Wartung zu vereinfachen. Mit Dollarzeichen in Variablennamen macht dies einfacher.

(auch helfen, einige vernünftigen Helferfunktionen den Code aussieht ähnlich, zum Beispiel Einwickeln Input-Wert-Lookups, nicht-OO-Versionen von strlen, substr usw. Es ist immer noch eine manuelle Feinabstimmung erfordert aber.)

Eine gültige JavaScript-Kennung shuold muss mit einem Buchstaben beginnen,     Strich (_) oder ein Dollarzeichen ($);    nachfolgende Zeichen können auch     sein Ziffern (0-9). Da JavaScript Groß- und Kleinschreibung,     Briefe     umfassen die Zeichen „A“ bis „Z“ (Großbuchstaben) und das     Zeichen "a" bis "z" (klein geschrieben).

Details:
https://developer.mozilla.org/en-US / docs / Web / JavaScript / Guide / Grammar_and_types # Variablen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top