Die umstrittene „mit“-Aussage: Kann sie für einen guten Zweck verwendet werden?
Alan Storms Bemerkungen zur „mit“-Aussage lösten Neugier aus in uns. Obwohl sein Nutzen kaum erforscht wurde, bleiben seine potenziellen Fallstricke unklar. Wir haben uns mit seiner Verwendung befasst und einige legitime Anwendungen aufgedeckt und gleichzeitig seine Risiken umgangen.
Wo die „mit“-Anweisung glänzt
Eine bemerkenswerte Verwendung der „mit“-Anweisung ist um Variablen innerhalb eines Blockbereichs zu definieren. In JavaScript fehlen Variablen mit Blockbereich, was es anfällig für Bereichsprobleme innerhalb von Schleifen und Abschlüssen macht.
For-Schleifen und die „with“-Anweisung
Bedenken Sie den folgenden Code:
for (var i = 0; i < 3; ++i) { setTimeout(function() { alert(num); }, 10); }
Dieser Code soll den Schleifenzähler „i“ asynchron anzeigen. Dies schlägt jedoch fehl, da JavaScript nicht für jede Iteration einen neuen Bereich einführt und die Variable „num“ von allen drei Abschlüssen gemeinsam genutzt wird.
Simulieren des Blockbereichs mit „with“
Bis ES6 allgemein verfügbar wird, kann die „with“-Anweisung verwendet werden, um den Blockumfang zu simulieren:
for (var i = 0; i < 3; ++i) { with ({num: i}) { setTimeout(function() { alert(num); }, 10); } }
Dieser Code erstellt ein separates Objekt mit eine „num“-Eigenschaft für jede Iteration, wodurch die Variable effektiv innerhalb des Bereichs des Blocks isoliert wird.
Andere Verwendungen von „with“
Neben der Simulation des Blockbereichs bietet die Die „with“-Anweisung kann auch verwendet werden für:
Zugriff auf Objekteigenschaften bequem:
with (object) { property = value; }
Iterieren durch Objekteigenschaften:
with (object) { for (property in this) { // Do something with the property } }
Fallstricke zu vermeiden
Während die „mit“-Anweisung nützlich sein kann, birgt sie Potenzial Fallstricke:
Fazit
Die „with“-Anweisung kann in bestimmten Szenarien ein nützliches Werkzeug sein, z. B. zur Simulation des Blockumfangs und zum bequemen Zugriff auf Objekteigenschaften. Allerdings sollten die potenziellen Nachteile sorgfältig abgewogen werden, bevor Sie es in Ihrem Code verwenden.
Das obige ist der detaillierte Inhalt vonIst die „with'-Anweisung ein nützliches Werkzeug oder eine Quelle von Problemen in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!