Читать книгу JavaScript für Ungeduldige - Cay Horstmann - Страница 90

Vorsicht

Оглавление

Ausdrücke wie numbers[i + 1] können in einer for-in-Schleife gefährlich sein:

if (numbers[i] === numbers[i + 1]) // Fehler! i + 1 ist '01', '11' usw.

In dieser Bedingung werden nicht etwa benachbarte Elemente verglichen. Da i einen String enthält, handelt es sich bei + um den Stringverkettungsoperator. Wenn i gleich '0' ist, ergibt i + 1 den Wert '01'.

Um dieses Problem zu lösen, wandeln Sie den String i in eine Zahl um:

if (numbers[i] === numbers[parseInt(i)+ 1])

Alternativ verwenden Sie die klassische for-Schleife.

Wenn Sie dem Array weitere Eigenschaften hinzufügen, werden natürlich auch diese aufgesucht:

numbers.lucky = true

for (const i in numbers) // i is '0', '1', '3', '99', 'lucky'

console.log(`${i}: ${numbers[i]}`)

Wie Sie in Kapitel 4 sehen werden, ist es möglich, dass externer Code aufzählbare Eigenschaften zu Array.prototype oder Object.prototype hinzufügt, die dann in einer for-in-Schleife sichtbar werden. Daher wird diese Praxis in der modernen JavaScript-Etikette strengstens abgelehnt. Dennoch warnen einige Programmierer davor, for-in-Schleifen zu verwenden, da Sie sich Sorgen über veraltete Bibliotheken oder Kollegen machen, die beliebigen Code aus dem Internet einfügen.


JavaScript für Ungeduldige

Подняться наверх