Frage zu Funktionsnamen

-André-

Erfahrenes Mitglied
Hallo.
ich habe folgende Frage: Überall ist geschrieben, ein Name einer Javascriptfunktion dürfe nur aus Buchstaben und Ziffern bestehen - das erste Zeichen müsse ein Buchstabe sein. Als einziges Sonderzeichen ist „_“ erlaubt (vgl. z.B. http://de.selfhtml.org/javascript/sprache/regeln.htm#namen

Wieso kann dann z.B. bei jQuery eine Funktion den Namen „$“ tragen? Ist das ein Fehler in der Umsetztung von Javascript oder ist das ein inzwischen legaler Name?


Liebe Grüße

-André-
 
Ich habe sowohl Quellen gefunden, welche $ erlauben und solche, die es verbieten. Wo man die offizielle Sprachdefinition findet, weiß ich leider nicht (someone?). Die paar Quellen, die ich gesehen habe, welche $ nicht erlauben, sind alle wortgleich und haben praktisch voneinander abgeschrieben. Wäre nicht das erste mal, dass Unwahrheiten durch Abschriften verbreitet werden.
Dafür, dass es erlaubt ist, spricht die Tatsache, dass der Firefox Debugger folgenden Code ohne weiteres akzeptiert
Javascript:
function $() {
    alert("bar");
}
		
$();

Auch wenn Java und Javascript nichts miteinander zu tun haben, wollte ich noch erwähnen, dass laut Sprachdefinition ein $-Zeichen am Anfang bei Java-Identifier erlaubt ist, aber nach Konvention für Systemeigene Klassen/Methoden vorgesehen ist.
 
http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf > Abschnitt 7.6

Variablennamen dürfen keine Operatoren, keine reservierten Wörter sein, keine Whitespace-Characters, Regex-Delimiter oder Unicode Escape Sequenzen enthalten usw.

Es funktioniert glaube ich, alles was mit Latin-1 darstellbar ist bis auf genannte Ausnahmen, auch äöüß, akzentierte Chars usw.

In ASCII eigentlich nur "_" und "$" was, alles was unter CharCode 128 liegt kann man generell nicht empfehlen :)


In der Praxis empfiehlt selbst jQuery die Nutzung von sog. Wrapper Funktionen, also z.b.
Code:
(function($) {
...$<jQuery-Specific-Function>
}(jQuery));

um Code-Konflikten mit z.B. Mootools usw. vorzubeugen.
 
Zuletzt bearbeitet:
Ich habe sowohl Quellen gefunden, welche $ erlauben und solche, die es verbieten.

Bei dem, wo es "verboten" ist, dürfte es sich um Conventions handeln, also eine Art Leitfaden für guten Stil(ich nenne es mal so).
Es ist also kein Fehler, von der Spezifikation her, sondern höchstens kein guter Stil.

Hier mal solche Coding-Conventions für JS(dürfte sicher der Zitat-Ursprung der meisten sonstigen Quellen sein):http://javascript.crockford.com/code.html
 

Neue Beiträge

Zurück