Es gibt absolut keinen Unterschied in der Bedeutung oder Leistung in JavaScript oder ActionScript.
varist eine Direktive für den Parser und kein zur Laufzeit ausgeführter Befehl. Wenn ein bestimmter Bezeichner varan einer beliebigen Stelle in einem Funktionskörper (*) einmal oder mehrmals deklariert wurde , bezieht sich jede Verwendung dieses Bezeichners im Block auf die lokale Variable. Es spielt keine Rolle, ob innerhalb der Schleife, außerhalb der Schleife oder beides valuedeklariert ist var.
Folglich sollten Sie schreiben, was Sie am besten lesbar finden. Ich bin mit Crockford nicht einverstanden, dass es immer das Beste ist, alle Vars an die Spitze einer Funktion zu setzen. Für den Fall, dass eine Variable vorübergehend in einem Codeabschnitt verwendet wird, ist es besser, varin diesem Abschnitt zu deklarieren , damit der Abschnitt eigenständig ist und kopiert werden kann. Andernfalls kopieren Sie während des Refactorings einige Codezeilen in eine neue Funktion, ohne die zugehörigen Elemente separat auszuwählen und zu verschieben var, und Sie haben einen versehentlichen globalen Fehler.
Bestimmtes:
for (var i; i<100; i++)
do something;
for (var i; i<100; i++)
do something else;
Crockford wird Ihnen empfehlen, das zweite zu entfernen var(oder beide vars zu entfernen und var i;oben zu tun ), und jslint wird Sie dafür beschimpfen. Aber IMO ist es wartbarer, beide zu behaltenvar s und den gesamten zugehörigen Code zusammenzuhalten, anstatt ein zusätzliches, leicht vergessenes Stück Code oben in der Funktion zu haben.
Persönlich neige ich dazu, als varerste Zuweisung einer Variablen in einem unabhängigen Codeabschnitt zu deklarieren , ob es in einem anderen Teil derselben Funktion eine andere separate Verwendung desselben Variablennamens gibt oder nicht. Für mich varist es eine unerwünschte JS-Warze , überhaupt deklarieren zu müssen (es wäre besser gewesen, wenn die Variablen standardmäßig lokal wären). Ich sehe es nicht als meine Pflicht an, die Einschränkungen von [einer alten Revision von] ANSI C auch in JavaScript zu duplizieren.
(*: außer in verschachtelten Funktionskörpern)