Javascript: for (each|in|of)
Freitag, 28.1.2022, 13:47 > daMaxMeiner unwesentlichen Meinung nach ist eine Programmiersprache nur so gut wie sie einerseits simpel, andererseits leicht zu lesen und dritterseits in sich schlüssig ist. So gesehen kann Javascript nicht wirklich gut sein, denn wozu braucht man bitte 4 verschiedene for-Schleifenkonstrukte, hä? Und ich muss jedes Mal wieder nachgucken, was wofür "gedacht" war. Hass.
https://thecodebarbarian.com/for-vs-for-each-vs-for-in-vs-for-of-in-javascript.html
Und spätestens, wenn solche verdrehten "Erklärungen" nötig werden, weiß ich, dass meine Meinung nicht ganz verkehrt sein kann:
Below is how the 4 looping constructs handle ['a',, 'c'] with an empty element. for/in and for/each skip the empty element, for and for/of do not.
// Prints "a, undefined, c" for (let i = 0; i < arr.length; ++i) { console.log(arr[i]); } // Prints "a, c" arr.forEach(v => console.log(v)); // Prints "a, c" for (let i in arr) { console.log(arr[i]); } // Prints "a, undefined, c" for (const v of arr) { console.log(v); }
Yeah JS, fuck.you(2);
Mit dem in sich schlüssig bin ich grundsätzlich bei dir, aber was ist simpel, was ist leicht zu lesen? Das dürfte jeder etwas anders sehen.
Ich kann zwar nicht wirklich Javascript, aber schaun'n mer mal:
for (let i = 0; i < arr.length; ++i)
Würde ich nehmen, wenn der Array/Listen-Index in der Schleife für irgendwas gebraucht wird.
arr.forEach(v => console.log(v));
Ich nehme an, das ist ein Lambda? In diesem einfachen Fall könnte man auch die erste for-Variante nehmen, aber wenn das Lamba z.B. als Funktionsargument reingereicht wird, sieht es schon anders aus.
// Prints "a, c"
for (let i in arr) {
// Prints "a, undefined, c"
for (const v of arr) {
What? Ok, ich bin raus.
Da fällt mir noch ein Zitat von Bjarne Stroustrup ein:
PS: Das HTML-Tag code scheint im Kommentar nicht zu funktionieren...?
@tenebra: Danke für den Erklärungsveruch
My thoughts exactly.
Nich? Echt nich? Was meinste denn, es ist doch da Meinst du die Einrückung? Ja, die kriege ich auch nur immer mit einem zusätzlichen <pre> hin, da sollte ich mal gucken, ob ich das nicht CSS-mäßig auf pre hingefrickelt bekomme.
Update, 12:35: so, fixed that. Danke für den Hinweis. Wobei... dein Kommentar sieht jetzt auch nicht anders aus als vorher. Was genau meintest du denn?
Update, 12:40: hä?!? Wasn jetzt los? Wieso ist bei dem ersten Code-Beispiel alles genau richtig, wohingegen beim 3. und 4. Beispiel jetzt plötzlich Leerzeilen auftauchen, die da gar nicht sind?! Maaaann, WordPress du Scheißsystem
Stimmt, im Seiten-Quelltext sind die code-Tags drin...
Das hat anscheinend mit den Linux-Schriften zu tun. Auf meinem System (Firefox unter Manjaro) sehen sich die Schrift vom Fließtext und von den code-Abschnitten sehr ähnlich. Unter Windows ist der Unterschied dagegen deutlich zu erkennen.
Verflixt, es scheint auch egal zu sein, welchen monospaced Font ich in Firefox einstelle. Der wirkt sich nur auf das Kommentar-Eingabefeld aus, aber nicht auf die code-Abschnitte. Selbst dann nicht, wenn man "Seiten das Verwenden von eigenen statt der oben gewählten Schriftarten erlauben" abschaltet. Mensch, Mozilla, das geht doch besser!
@tenebra: is Software, da kamma nix machen