Welche Zeichen sind für JavaScript-Variablennamen gültig?
Wer kann mir eine Web Seite mit den Zeichen, die verwendet werden können für die Benennung einer JavaScript-variable?
Möchte ich das erstellen einer kleinen "Erweiterung der Bibliothek" für meine nicht-JavaScript-Nutzer hier auf der Arbeit (die scheinen alle zu zimperlich sein, wenn es zur Sprache kommt). Ich Liebe es, wie jQuery und Prototype haben beide die $
dollar-Zeichen, und da ich jQuery verwenden, ich bin auf der Suche nach einem anderen netten single-Charakter-symbol zu verwenden.
Merke ich, dass ich nur den test aus einer Reihe von Zeichen, aber ich bin posiert diese Frage zu den vielen JavaScript-sensei der Welt für Beratung über das, was Zeichen (auch wenn gültig) wäre eine schlechte Idee, verwenden (unter Berücksichtigung der künftigen integration mit anderen populären Bibliothek vielleicht).
InformationsquelleAutor der Frage Richard Clayton | 2009-11-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der ECMAScript-Spezifikation im Abschnitt 7.6 Bezeichner-Namen und Bezeichner, ein Gültiger Bezeichner ist definiert als:
schafft eine Menge Möglichkeiten für die Benennung von Variablen und auch beim Golfen. Lassen Sie uns versuchen, einige Beispiele.
Einen gültigen Bezeichner beginnen konnte, entweder mit einer
UnicodeLetter
,$
,_
oder\ UnicodeEscapeSequence
. Ein unicode-Buchstabe ist ein beliebiges Zeichen aus diesen Kategorien (alle Kategorien):Dies allein macht für einige tolle Möglichkeiten - funktionierende Beispiele. Wenn es nicht funktioniert, in allen Browsern, dann nennen es ein Fehler, die es verursachen sollte.
InformationsquelleAutor der Antwort Anurag
Grundsätzlich im regulären Ausdruck der form:
[a-zA-Z_$][0-9a-zA-Z_$]*
. In anderen Worten, das erste Zeichen kann ein Buchstabe oder _ oder $, und die anderen Zeichen können Buchstaben oder _ oder $ oder zahlen.Hinweis: Während andere Antworten weisen darauf hin, dass Sie verwenden können Unicode-Zeichen in JavaScript-Bezeichnern, die eigentliche Frage war "Welche Charaktere sollte ich verwenden für den Namen einer extension-Bibliothek wie jQuery?" Dies ist eine Antwort auf diese Frage. Sie können Unicode-Zeichen in Bezeichnern, aber tun Sie es nicht. Codierungen geschraubt bekommen, alle Zeit. Halten Sie Ihre öffentlichen Bezeichner in der ASCII 32-126 Bereich, wo es sicher ist.
InformationsquelleAutor der Antwort Anthony Mills
Ich denke, Sie wollen die Ecma-262 Spezifikation:
http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
Gibt es ein Abschnitt auf Seite 15, die festlegt, was Bezeichner syntax werden kann.
InformationsquelleAutor der Antwort Benj
Bevor JavaScript 1.5:
^[a-zA-Z_$][0-9a-zA-Z_$]*$
In Englisch: Es muss beginnen mit einem dollar-Zeichen, dem Unterstrich oder einem Buchstaben in das 26-Zeichen-alphabet, groß-oder Kleinschreibung. Nachfolgende Zeichen (falls vorhanden) kann eine dieser oder eine Ziffer ist.
JavaScript 1.5 und höher * :
^[\p{L}\p{Nl}$_][\p{L}\p{Nl}$\p{Mn}\p{Mc}\p{Nd}\p{Pc}]*$
Dies ist schwieriger auszudrücken, die in Englisch, aber es ist vom Konzept her ähnlich wie die ältere syntax mit dem Zusatz, dass die Buchstaben und Ziffern können aus jeder Sprache. Nach dem ersten Zeichen, es dürfen auch zusätzliche Unterstrich-wie Zeichen (zusammen als "Konnektoren") und zusätzliche Charakter-die Kombination von Zeichen ("modifiers"). (Andere Währung Symbole, die nicht enthalten sind in dieser erweiterten Satz.)
JavaScript 1.5 und höher erlaubt auch Unicode-escape-Sequenzen, vorausgesetzt, dass das Ergebnis ist ein Zeichen, das erlaubt werden würde, in den oben genannten regulären Ausdruck.
Bezeichner muss auch nicht sein, eine aktuelle reserviertes Wort ist oder eine, die betrachtet wird, für die zukünftige Verwendung.
Gibt es keine praktische Grenze für die Länge eines Bezeichners. (Browser variieren, aber Sie werden sicher über 1000 Zeichen und wahrscheinlich noch mehrere Größenordnungen als das.)
Links zu den Charakter-Kategorien:
(kombiniert in der regex oben als "L")
*n.b. Dieses Perl-regex ist zu beschreiben, die syntax nur — es funktioniert nicht in JavaScript, die nicht (noch nicht), die Unterstützung für Unicode-Eigenschaften. (Es gibt einige third-party-Pakete, die Anspruch auf solche Unterstützung.)
InformationsquelleAutor der Antwort danorton
Eigentlich ECMAScript, sagt auf Seite 15:
Dass ein Bezeichner beginnen mit einem $, ein Unterstrich oder ein UnicodeLetter, und dann geht es auf (nur unten), um anzugeben, dass ein UnicodeLetter kann jedes beliebige Zeichen aus dem unicode-Kategorien, Lo, Ll, Lu, Lt, Lm und Nb.
Und wenn man sich mal die Kategorien, die Sie werden sehen, dass dies eröffnet viel mehr Möglichkeiten als nur lateinische Buchstaben. Suchen Sie einfach nach "unicode-Kategorien" in google und Sie finden Sie.
InformationsquelleAutor der Antwort Yuvalik
Javascript-Variablen
Können Sie eine variable mit einem beliebigen Buchstaben,
$
oder_
Charakter. Solange es nicht mit einer Zahl beginnen, können Sie die zahlen als gut.Start:
[a-z], $, _
Enthalten:
[a-z], [0-9], $, _
jQuery
Können Sie
_
für Ihre Bibliothek so, dass es stehen Seite an Seite mit jQuery. Es gibt allerdings eine Konfiguration, die Sie können, so dass jQuery nicht verwenden$
. StattdessenjQuery
. Um dies zu tun, legen Sie einfach:Auf dieser Seite erklärt, wie dies zu tun.
InformationsquelleAutor der Antwort EndangeredMassa
Die akzeptierte Antwort würde Regel aus einer Menge Gültiger Bezeichner, soweit ich das sehen kann. Hier ist ein regulärer Ausdruck, den ich zusammen gestellt habe, die Folgen sollten die Skillung (siehe Kapitel 7.6 auf Bezeichner). Erstellt wurde es mit RegexBuddy und finden Sie einen export der Erklärung an http://samples.geekality.net/js-identifiers.
Darüber hinaus wird der name nicht eines der folgenden reservierten Wörter.
InformationsquelleAutor der Antwort Svish
Javascript-Variablen kann Buchstaben, Ziffern, Dollarzeichen ($) und Unterstriche (_). Sie können nicht mit Ziffern beginnen.
In der Regel Bibliotheken verwenden
$
und_
als shortcuts für Funktionen, die Sie verwenden werden, überall. Obwohl die Namen$
oder_
sind nicht bedeutungsvoll, Sie sind nützlich für Ihre Kurzatmigkeit und da Sie mit der Funktion überall sind Sie erwartet, zu wissen, was Sie bedeuten.Wenn Ihre Bibliothek nicht darin bestehen, immer eine einzelne Funktion wird überall dort eingesetzt, würde ich empfehlen, dass Sie verwenden Sie aussagekräftige Namen, wie diejenigen, die Sie und andere verstehen, was dein code tut, ohne notwendigerweise dabei die source-code Nettigkeit.
Können Sie zum Beispiel einen Blick auf die genial DateJS Bibliothek und am syntatic Zucker, die es ermöglicht, ohne symbol oder kurzen Namen Variablen.
Sollten Sie zuerst Ihren code, um praktisch zu sein, und erst nach versuchen Sie, es ziemlich.
InformationsquelleAutor der Antwort Miguel Ventura
im Falle von regulären Ausdrücken ist nicht unbedingt ein muss, wäre es nicht besser, Fragen Sie einfach den browser, um zu entscheiden, mit
eval
?InformationsquelleAutor der Antwort Anas Nakawa
Hier ist eine schnelle Anregung für die Erstellung von Variablen-Namen. Wenn Sie möchten, dass die variable nicht zum Konflikt, wenn verwendet in FireFox, nicht verwenden Sie den Variablennamen "_content", da diese variable-name bereits verwendet wird, durch den browser. Ich fand dies heraus die harte Tour und hatte zu ändern, alle Orte, die ich verwendet, die variable "_content" in einer großen JavaScript-Anwendung.
InformationsquelleAutor der Antwort DanBrianWhite
Habe ich Anas Nakawa Idee und es verbessert. Erstens, es gibt keinen Grund, um tatsächlich die Funktion erklärt wird. Wir wollen wissen, ob es richtig analysiert, und nicht, ob der code funktioniert. Die zweite, eine literal-Objekt ist ein besserer Rahmen für unseren Zweck als
var XXX
wie es ist schwieriger zu durchbrechen.InformationsquelleAutor der Antwort cleong
Variablen-Benennungs-Konventionen:
Alle JavaScript-Variablen identifiziert werden müssen mit eindeutigen Namen.
Diese eindeutigen Namen werden Bezeichner genannt.
Bezeichner können kurze Namen (z.B. x und y), oder mehr beschreibende Namen (Alter, Summe, totalVolume).
Den Allgemeinen Regeln für die Konstruktion von Namen für Variablen (unique identifiers) sind:
Namen können Buchstaben, Ziffern, Unterstriche und Dollarzeichen.
Namen müssen mit einem Buchstaben beginnen
Namen können auch beginnen mit $ und _ .
Namen sind case-Sensitiv (y und Y verschiedene Variablen sind)
Reservierte Wörter (wie JavaScript keywords) können nicht verwendet werden, da Namen
Quelle:http://www.w3schools.com/js/js_variables.asp
InformationsquelleAutor der Antwort Satyapriya Mishra