645 Stimmen

Welche Zeichen sind für JavaScript-Variablennamen zulässig?

Welche Zeichen können für die Benennung einer JavaScript-Variablen verwendet werden?

Ich möchte eine kleine "Erweiterungsbibliothek" für meine Nicht-JavaScript-Benutzer hier bei der Arbeit zu schaffen (die alle scheinen zimperlich zu sein, wenn es um die Sprache kommt). Ich liebe, wie jQuery und Prototype haben beide verwenden die $ Dollar-Zeichen, und da ich jQuery verwenden, bin ich auf der Suche nach einem anderen netten Ein-Zeichen-Symbol zu verwenden.

Mir ist klar, dass ich einfach eine Reihe von Zeichen testen könnte, aber ich hoffe, dass ich meine Liste von Zeichen für den Anfang eingrenzen kann (vielleicht in Anbetracht einer zukünftigen Integration mit einer anderen beliebten Bibliothek).

19 Stimmen

Wenn Sie nur nach alternativen Symbolen suchen, ist das griechische Alphabet gültig (z. B, )... oder wenn Sie Ihre anderen Entwickler wirklich durcheinander bringen wollen, könnten Sie das englische Alphabet verwenden, aber in einer anderen Schriftart (z.B., ) ...auch gültig!

2voto

DanBrianWhite Punkte 47

Hier ist ein kurzer Vorschlag für die Erstellung von Variablennamen. Wenn Sie wollen, dass die Variable nicht in Konflikt gerät, wenn sie in FireFox verwendet wird, nicht verwenden Sie den Variablennamen " _Inhalt ", da dieser Variablenname bereits vom Browser verwendet wird. Ich habe das auf die harte Tour herausgefunden und musste alle Stellen ändern, an denen ich die Variable "_content" in einer großen JavaScript-Anwendung verwendet habe.

1voto

cleong Punkte 6797

Ich habe die Idee von Anas Nakawa aufgegriffen und sie verbessert. Zunächst einmal gibt es keinen Grund, die deklarierte Funktion tatsächlich auszuführen. Wir wollen wissen, ob sie korrekt geparst wird, und nicht, ob der Code funktioniert. Zweitens ist ein literales Objekt ein besserer Kontext für unseren Zweck als var XXX da es schwieriger ist, aus ihr auszubrechen.

    function isValidVarName( name ) {
    try {
        return name.indexOf('}') === -1 && eval('(function() { a = {' + name + ':1}; a.' + name + '; var ' + name + '; }); true');
    } catch( e ) {
        return false;
    }
    return true;
}

// so we can see the test code
var _eval = eval;
window.eval = function(s) {
    console.log(s);
    return _eval(s);
}

console.log(isValidVarName('name'));
console.log(isValidVarName('$name'));
console.log(isValidVarName('not a name'));
console.log(isValidVarName('a:2,b'));
console.log(isValidVarName('"a string"'));

console.log(isValidVarName('xss = alert("I\'m in your vars executin mah scrip\'s");;;;;'));
console.log(isValidVarName('_;;;'));
console.log(isValidVarName('_=location="#!?"'));

console.log(isValidVarName(''));
console.log(isValidVarName(''));
console.log(isValidVarName(''));
console.log(isValidVarName(''));
console.log(isValidVarName('KingGeorge'));
console.log(isValidVarName('}; }); alert("I\'m in your vars executin\' mah scripts"); true; // yeah, super valid'));
console.log(isValidVarName('if'));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X