Wie erstelle ich Loop einer Funktion?

2 Antworten

function(values);

for (var i = 0, i < values.length, i++) {

console.log(values[i]);

}

Ich bin von der Syntax jetzt nicht so fit in JavaScript, aber das sollte denke ich so funktionieren.

Woher ich das weiß:eigene Erfahrung

MagisterSamael  11.11.2023, 04:13
  1. Funktionen/Methoden benötigen einen Namen, da absolut alles in JavaScript eine Variable ist.
  2. Der Code in Funktionen/Methoden muss von Geschweiften Klammern umgeben sein.
  3. Die Bestandteile des for-Loops müssen mit Semikolon getrennt sein.
  4. "var" als Deklaration sollte aus verschiedenen Gründen nicht genutzt werden - besonders bei Anfängern. Lieber die Verwendung von "let" lehren.
0
alex1grrt  12.11.2023, 06:25
@MagisterSamael

Mein Code war stark orientiert an dem Code des Fragestellers.

Seh es als eine Art Pseudocode, ich habe da jetzt nicht so arg drauf geachtet wie korrekt die Syntax in JavaScript sein sollte.

0
MagisterSamael  12.11.2023, 06:27
@alex1grrt

Der Fragesteller hat keine meiner Punkte verletzt. Wo ist also die Orientierung bitte?

0

Ave!

Es gibt viele Möglichkeiten und herangehensweisen. Hier einmal ein paar mit Erklärung zusammen getragen:

Per While-Loop (wie du es versucht hast):

function printSquares1(values){
    let i=0;                        // Setze i auf 0
    while(i<values.length){         // Solang i kleiner als unser values-Array ist
        console.log(values[i]);     // Gebe das item mit dem Index i aus dem Array aus
        i++;                        // Erhöhe i um 1
    }
}

i++ ist syntaktischer Zucker für i=i+1.

Beachte, dass du in deinem Versuch die Länge der Funktion (printSquares1) versucht hast als Bedingung für die Schleife zu nutzen:

while (i < printSquares1.length) {

Das ist Falsch, wir wollen natürlich die Länge des Arrays haben um es zu iterieren.

Während While-Loops völlig machbar sind, wollen wir Programmierer es simpel und übersichtlich haben. Mit dem For-Loop haben wir alles unter einem Hut und müssen nicht erst eine Indizierungs-Variable erstellen:

function printSquares1(values){
    for (let i=0; i < values.length; i++){
        console.log(values[i]);
    }
}

Eine For-Schleife macht im Grunde nichts anderes wie eine While-Schleife nur ohne das lästige Erstellen von Indizierungsvariablen in- und außerhalb der Schleife.

Dabei besteht eine For-Schleife aus drei Bestandteilen:

for (Initialisierung; Bedingung; Endausführung){
  ... code
}
  • Initialisierung: Hier definieren wir alles, was wir für die Schleifenausführung benötigen oder haben wollen. In der Regel definieren wir hier unsere Indizierungsvariable, also let i = 0;
  • Bedingung: Dieser Teil ist das gleiche wie in der While-Schleife. Hier kommt unsere Bedingung hinein, wie lange die Schleife laufen soll, also i < values.length;
  • Endausführung: Der Code, der hier steht wird nach jeder Iteration der For-Schleife ausgeführt. Das kommt uns gelegen, denn wir wollen nach jeder Ausführung i um 1 erhöhen, also: i++

So haben wir also drei Zeilen die wir noch in der While-Schleife brauchten auf eine Zeile herunterkürzen können.

Aber es geht noch simpler:

function printSquares1(values){
    for (let value of values){
        console.log(value);
    }
}

Die For-Schleife kann nämlich auch direkt Arrays iterieren ohne dass wir dafür einen Index erstellen müssen.

Diese "for-of"-Schleife besteht aus zwei Bestandteilen:

for (Iterationsvariable of Array) {
  ... code
}
  • Iteraritionsvariable: Hier definieren wir die Variable, die für jede Iteration uns den aktuellen Wert aus dem Array geben soll. In unserem Fall habe ich sie mal value genannt.
  • Array: Hier kommt der Name des Arrays hinein.

In dieser Struktur geht die "for-of"-Schleife das gesamte Array durch und ermöglicht es uns mit jeder Iteration den aktuellen Wert über value auszulesen.

Abschließen noch zwei Einzeiler, die ich aber nicht erkläre:

function printSquares1(values){
    values.forEach(value=>console.log(value));
}

Ähnlich wie for-of, wobei forEach nicht eingesetzt werden sollte, weil es massiv langsamer als for-of ist.

function printSquares1(values){
    values.map(value=>console.log(value));
}

Map hingegen ist - richtig angewendet - schneller als jede andere Schleife, aber hier kommt im Hintergrund noch mehr hinzu, was den Rahmen sprengen würde zu erklären.

Woher ich das weiß:Studium / Ausbildung – Anwendungsentwickler, Spezialisierung auf IT-Sicherheit