Fehler beim Durchlaufen eines Arrays mit der for-in-Schleife in JavaScript
Um ein Array zu durchlaufen, sollte
man die Schleife for-of verwenden.
Manchmal jedoch versuchen Anfänger fälschlicherweise,
die Schleife for-in anzuwenden.
Schauen wir uns die charakteristischen Merkmale
dieses Fehlers an.
Nehmen wir an, wir haben ein Array:
let arr = ['a', 'b', 'c'];
Lassen Sie uns die Elemente dieses Arrays durchlaufen und sie in einer Zeichenkette zusammenfassen.
Ein gewisser Programmierer hat diese Aufgabe bereits gelöst,
hat aber fälschlicherweise die Schleife
for-in verwendet. Schauen wir uns an,
was dabei herausgekommen ist:
let res = '';
for (let elem in arr) {
res += elem;
}
console.log(res); // gibt '012' aus
Also, als Ergebnis erhalten wir die Zeichenkette '012',
und nicht 'abc'. Lassen Sie uns herausfinden, warum
das passiert ist.
Warum konnte das Array überhaupt
durch die Schleife for-in durchlaufen werden? Die Sache ist die, dass
ein Array in JavaScript ein spezieller
Fall eines Objekts ist. Daher ist dies in dieser Hinsicht
eigentlich ein korrekter Code. Aber man sollte es
nicht tun.
Der Grund ist, dass for-in
unter bestimmten Umständen zu viel erfassen
kann, und man neben den Array-Elementen
beim Durchlaufen noch etwas Parasitäres erhält.
Durchlaufen Sie Arrays nur mit for-of.
Lassen Sie uns nun klären, warum wir ein
solch seltsames Ergebnis sehen. Die Sache ist die,
dass beim Durchlaufen mit for-in
in die Variable elem tatsächlich
die Schlüssel (Keys) gelangen, ungeachtet
des irreführenden Namens dieser
Variable.
Lassen Sie uns den gemachten Fehler korrigieren und einen korrekten Code schreiben:
let arr = ['a', 'b', 'c'];
let res = '';
for (let elem of arr) {
res += elem;
}
console.log(res); // gibt 'abc' aus