In statischen Sprachen wie Java / C # verwende ich normalerweise Konstanten für Zeichenfolgen oder Zahlen, anstatt sie nur in den Code einzufügen. Ich neige jedoch dazu, diese Praxis in JavaScript zu vermeiden. In jüngerer Zeit, als einige andere Programmierer um mich herum diesen Ansatz in JS gewählt haben, habe ich beschlossen, dass ich wahrscheinlich entweder meine oder ihre Argumentation festigen sollte.
In JavaScript gibt es keine tatsächliche "const" -Deklarationssyntax. Wir geben uns normalerweise nur mit einer informellen Richtlinie zufrieden, bei der die Eigenschaften in Großbuchstaben nicht geändert werden. Aber ich bin normalerweise der Meinung, sie ganz zu vermeiden, da die meisten ihrer Vorteile in JavaScript verloren gehen. In Java führt eine falsch geschriebene Zeichenfolge dazu, dass das Programm fehlschlägt, wenn Sie versuchen, es auszuführen. An diesem Punkt korrigieren Sie es und fahren fort. Ein statischer Prüfer, bei dem beide Instanzen auf dieselbe Konstante verweisen, beseitigt dieses Problem, da es zur Kompilierungszeit gefunden werden kann. Aber JavaScript wird dieses Problem einfach überall haben, da Sie IMMER zur Laufzeit die Richtigkeit Ihrer Rechtschreibung feststellen werden :
Library = { doThing: function() }
setTimeout(function()
Liberry.doThing()
// No such object: Liberry
}, 0);
Der beste Schutz dagegen ist normalerweise "streng verwenden". Für Entwickler, die es bevorzugen, ist es in Ordnung, wenn sie das verwenden, um Probleme mit nicht deklarierten Variablen schneller zu finden. Meine Meinung war jedoch, dass die Bereitstellung von Zeichenfolgenkonstanten für REST-APIs usw. Sie nicht vor irgendetwas schützt. Ein anderes Beispiel:
CompanyAPI.constants.ENROLL_URL = "/rest/enroll";
CompanyAPI.constants.FIRST_NAME = "firstName";
ajax({url: CompanyAPI.constants.ENROLL_URL,
data: CompanyAPI.constants.FIRST_NAME
});
// vs.
ajax({url: "/rest/enroll",
data: "firstName"
});
... Sie wollten das oben genannte schreiben, machten dann aber Tippfehler. Hoppla.
ajax({url: CompanyAPI.constants.ENROL_URL,
data: CompanyAPI.constants.FIRS_NAME
});
// vs.
ajax({url: "/rest/enrol",
data: "firsName"
});
Die auf Konstanten basierende liefert immer noch undefiniert , während "firsName" nicht besser ist. Zu diesem Zweck neige ich dazu, dies nur als Vorteil statischer Sprachen zu betrachten und mich nicht darum zu kümmern, ein System zu haben, um es zu beheben (abgesehen davon, dass ich möglicherweise anfange, "use strict" zum Debuggen zu verwenden). Können mir einige andere Leute sagen, was ihre bevorzugte Praxis für die Konstanz von Zeichenfolgen / Ganzzahlen ist?
BEARBEITEN: Zur Verdeutlichung ist es normalerweise meine Präferenz, Zeichenfolgen wie "Vorname" ohne konstante Deklaration der obersten Ebene direkt inline zu setzen - die Strafen für Rechtschreibfehler sind in beiden Fällen gleich. Zeichenfolgen, die möglicherweise lang werden, wie z. B. eine REST-URL, werden in der Regel oben in der Datei definiert.
FIRST_NAME
, die mich gefragt hat - ändert sich das nicht pro Benutzer?
FIRST_NAME
? Das sieht so aus, als ob es von etwas Serverseitigem kommt und an das Javascript übergeben wird. Und wenn Sie sagen, dass Sie aus Java / C # stammen, haben Sie das Gefühl, dass Sie falsch verstehen, wofür diese Variablen bestimmt sind: Trennen Sie die Daten vom Code, damit die.js
Datei vom Browser zwischengespeichert werden kann ...