JavaScript "für (var i = 0; ...) {...}" Browser Inkompatibilitäten?

7

Ich habe schon lange keine ernsthafte JavaScript-Programmierung mehr gemacht und schreibe für einige meiner Kollegen einen Einführungsleitfaden für die Sprache. Ich möchte gerne die Best Practices für Schleifen besprechen, aber es gibt ein kleines Detail, das ich in meinem Hinterkopf behalten habe:

Beim Durchschleifen von Arrays erinnere ich mich daran, dass das folgende Muster nicht sicher zu verwenden ist, da es große Browser gibt, die es nicht unterstützen:

%Vor%

Stattdessen muss das Schlüsselwort var wie folgt aus dem Array entfernt werden:

%Vor%

Stimmt das? Ich habe das Netz durchforstet und kann das nicht bestätigen. Unterstützen einige alte Browser die erste Methode nicht? Wenn nicht, welche nicht?

    
thebossman 13.02.2012, 19:32
quelle

6 Antworten

12
  

"Ist das korrekt?"

Wenn wir nicht von einem wirklich alten Browser sprechen, ist mir ein solches Problem mit Browsern, die heute verwendet werden, nicht bekannt.

Das einzige Problem, das Leute mit dem ersten Beispiel haben, ist, dass es jemanden dazu bringen könnte, zu glauben, dass JavaScript block scope hat, was es nicht tut. Dies hat sich seit ES6 geändert block scope .

In beiden Beispielen wird die Variable i auf die umschließende Variablenumgebung beschränkt, unabhängig davon, ob die umschließende Umgebung eine Funktion oder die globale Umgebung ist.

    
quelle
7
  

Stattdessen muss das Schlüsselwort var aus dem Array verschoben werden

Nicht unbedingt. Der Punkt ist, dass Sie var Schlüsselwort vor i NICHT vergessen sollten, andernfalls wird es zu global Variable. Also ist es in Ordnung, wenn Sie das tun:

%Vor%

Sie können die Leistung des obigen Codes verbessern, indem Sie eine Variable erstellen, die die Länge des Arrays / der Sammlung enthält, anstatt sie bei jeder Iteration immer wieder zu lesen:

%Vor%

BTW sorgen Sie sich nicht um den Browser, diese Schleife sollte über Browser funktionieren:)

    
Sarfraz 13.02.2012 19:35
quelle
0

Angenommen, Sie unterstützen keine älteren Browser als IE6, sollte dies kein Problem sein.

    
ironchefpython 13.02.2012 19:36
quelle
0

Nicht, dass Sie danach gefragt hätten, aber Sie können jQuery wie folgt verwenden:

%Vor%     
GoldenNewby 13.02.2012 19:37
quelle
0

JavaScript deklariert tatsächlich, dass der Gültigkeitsbereich der Funktion den Umfang nicht blockiert. Deklarierte Variablen werden an den Anfang ihrer Funktion gehoben. Was ich sage ist, dass Ihre Beispiele tatsächlich identisch sind. Auch mit dem Schlüsselwort var innerhalb der for -Anweisung ist die Variable i außerhalb der Schleife zugänglich.

Sie müssen nur darauf achten, dass Sie die var weglassen. Die Variable wird global anstatt auf die Funktion beschränkt.

    
Jivings 13.02.2012 19:40
quelle
0

ist heute hier reingekommen.

%Vor%

mein jscript war in einer xsl-Datei, die aus einer html-Datei aufgerufen wurde - funktionierte im IE, aber nicht in anderen Browsern - Code stürzte ab und nichts wurde angezeigt

glücklicherweise konnte ich es ändern, was für alle getesteten Browser funktionierte

%Vor%

auch bewusst sein Ссылка

    
user7941071 08.05.2017 04:01
quelle