Angenommen, ich habe eine Funktion habe, dayToString
, als solche definiert:Wird ein Array innerhalb einer JavaScript-Funktion bei jedem Aufruf neu erstellt?
function dayToString(n) {
return ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"][n];
}
einfach genug. Verbrauch könnte in etwa so aussehen:
var d = new Date();
var todayAsString = dayToString(d.getDay());
Meine Frage ist, wird das Array innerhalb dayToString
bei jedem Aufruf neu erstellt, oder wird er nur einmal erstellt?
bearbeiten
Eine Klarstellung: Ich weiß, wie manuell über einen Verschluss oder eine externe Anordnung dieser Neuzuweisung zu vermeiden. Um meine ursprüngliche Absicht zu verdeutlichen: Sind die aktuellen JavaScript-Engines (V8, SpiderMonkey, JavaScriptCore, Chakra, usw.) schlau genug, um zu erkennen, dass das Array statisch ist und es so behandelt? Gibt es vielleicht etwas in der JS-Spezifikation, das eine solche Optimierung verhindert?
Ich bin mir dieser Methode bewusst, um zu vermeiden, was wir für eine Neuzuweisung halten, aber ich meine, dass diese Frage mehr auf V8, JSC ausgerichtet ist und Freunde dieses statische Element in einer Funktion sehen und es so behandeln können . –