Varje JavaScript-looptyp förklaras: [With Codeblocks and Examples]

By rik

JavaScript är ett av de mest frekvent använda programmeringsspråken. Utvecklare som siktar på att bli JavaScript-experter måste bemästra grunderna i loopar, deras variationer och funktionalitet.

En JavaScript-loop är ett verktyg som underlättar repetitiva uppgifter baserat på ett angivet villkor. Termen ”iterera” refererar generellt till upprepning inom ramen för en loop. En loop fortsätter att iterera tills ett definierat stoppvillkor är uppfyllt.

För att visualisera detta, tänk dig ett datoriserat spel där du får instruktioner om att ta X antal steg norrut och sedan Y steg åt vänster.

Att ta 7 steg norrut kan representeras som:

for (let steg = 0; steg < 7; steg++) {
  // Körs 7 gånger, med värden för steg från 0 till 6.
  console.log("Går norrut ett steg");
}

När detta kodblock körs kommer följande att ske:

Varför används loopar?

  • Utför repetitiva operationer: Loopar möjliggör upprepning av instruktioner tills specifika villkor är uppfyllda.
  • Iterera över objekt eller arrayer: Loopar kan användas för att gå igenom egenskaperna hos ett objekt eller elementen i en array, vilket gör det möjligt att utföra åtgärder för varje enskild egenskap eller element.
  • Filtrera data: Loopar kan tillämpas för att filtrera data baserat på specifika kriterier.

JavaScript erbjuder olika typer av loopar: for, while, do…while, for…of och for…in. Låt oss undersöka dessa mer detaljerat och belysa deras funktioner.

For-loop

En for-loop upprepas så länge ett specificerat villkor utvärderas som sant. Denna loop består av tre valfria uttryck, följt av ett kodblock.

for (initialisering; villkor; slutligtUttryck) {
  // kod
}
  • Initialiseringsuttrycket: Exekveras innan den första loop-iterationen. Det används vanligtvis för att initiera räknare.
  • Villkorsuttrycket: Kontrolleras före varje iteration. Koden i loopen körs om villkoret är sant. Loopen avslutas när villkoret blir falskt. Om villkoret utelämnas betraktas det som sant.
  • SlutligtUttryck: Exekveras efter varje iteration. Används främst för att öka en räknare.

Med block-satsen ({}) kan flera satser grupperas och köras. För att avsluta loopen innan villkoret utvärderas som falskt, använd break-satsen.

Exempel på for-loopar

  • Iterera med for-loop:
  • for (let i = 0; i < 7; i++) {
      console.log(i);
    }
    

    I detta kodblock:

    • Variabeln i initieras till noll (let i=0).
    • Villkoret är att i ska vara mindre än 7 (i < 7).
    • Loopen upprepas så länge i är mindre än 7.
    • Efter varje iteration ökar värdet av i med 1 (++i).
  • Avsluta loopen med break-satsen:
  • for (let i = 1; i < 11; i += 2) {
      if (i === 9) {
        break;
      }
      console.log('Antal utvecklare: ' + i);
    }
    
    • Kodblocket itererar från 1 till 10 (i < 11).
    • Variabeln i initieras till 1 (let i = 1).
    • Loopen fortsätter så länge i är mindre än 11.
    • Värdet av i ökar med 2 efter varje iteration (i += 2).

    If-satsen kontrollerar om i är lika med 9. Om villkoret är sant, körs break-satsen och loopen avslutas.

    (bild)

    For…of-loop

    For…of-loopen används för att iterera över itererbara objekt som Map, Array, Arguments och Set. Denna loop anropar en anpassad iterationshook där satser exekveras för varje unikt egenskapsvärde.

    Den grundläggande strukturen för en for…of-loop är:

    for (variabel of objekt)
      sats
    

    Exempel på for…of-loop

  • Iterera med for…of-loop över en array:
  • const frontendLanguages = [ "HTML", "CSS", "JavaScript" , "React"];
    for (let i of frontendLanguages) {
      console.log(i);
    }
    

    I denna kod:

    • En array med namnet frontendLanguages definieras.
    • Arrayen innehåller elementen ”HTML”, ”CSS”, ”JavaScript” och ”React”.
    • For…of-loopen itererar genom varje element i frontendLanguages.
    • Variabeln i tilldelas värdet av varje element under varje iteration, och dessa värden skrivs ut i konsolen.

  • Iterera med for…of-loop över en uppsättning:
  • const s = new Set();
    s.add(2);
    s.add("grey");
    for (let n of s) {
      console.log(n);
    }
    

    I detta kodblock:

    • En variabel s deklareras och tilldelas en ny uppsättning med Set()-konstruktorn.
    • Två element läggs till med metoden add().
    • For…of-loopen itererar genom objekten i uppsättningen.
    • Den aktuella elementet tilldelas variabeln n innan console.log(n) körs.

  • Iterera med for…of-loop över en karta:
  • const m = new Map();
    m.set(4, "rabbit");
    m.set(6, "monkey");
    m.set(8, "elephant");
    m.set(10, "lion");
    m.set(12, "leopard");
    for (let n of m) {
      console.log(n);
    }
    

    I detta kodblock:

    • Ett nytt kartobjekt skapas med Map()-konstruktorn.
    • Variabeln m deklareras.
    • Fem nyckel-värdepar läggs till med .set()-metoden.
    • For…of-loopen itererar genom elementen i kartobjektet m.

    For…in-loop

    En for…in-loop används för att iterera över ett objekts egenskaper. Den grundläggande strukturen är:

    for (egenskap in objekt) {
      // kod
    }
    

    Du kan använda for…in-loopen för att iterera genom arrayer och arrayliknande objekt.

    const shoppingList = { kales: 4, tomatoes: 2, cabbage: 0, lettuce:6, pumpkin:5 };
    for (const vegetable in shoppingList) {
      console.log(vegetable);
    }
    

    I detta kodblock:

    • Ett JavaScript-objekt med namnet shoppingList skapas.
    • For-loopen används för att iterera över varje egenskap i shoppingList med hjälp av in-operatorn.
    • I varje iteration tilldelar loopen det aktuella egenskapsnamnet i shoppinglistan till variabeln vegetable.

    While-loop

    While-loopen utvärderar ett villkor; om det är sant, körs kodblocket. Om villkoret är falskt, avslutas loopen och kodblocket körs inte.

    Den grundläggande strukturen är:

    while (villkor)
      sats
    

    Villkoret måste utvärderas innan satsen körs. Flera satser kan köras med hjälp av {} eller block-satser.

    Exempel på while-loop

    let n = 0;
    while (n < 9) {
      console.log(n);
      n++;
    }
    

    I denna kod:

    • En variabel n initieras med värdet noll (let n=0).
    • Loopen körs så länge n är mindre än 9 (n < 9).
    • Värdet av n visas i konsolen och ökas med 1 efter varje iteration (n++).
    • Koden slutar köras vid värdet 8.

    Do…while-loop

    En do…while-loop itererar tills ett specificerat villkor utvärderas som falskt.

    Den allmänna strukturen är:

    do
      sats
    while (villkor);
    

    Satsen körs en gång innan villkoret kontrolleras. Satsen körs om villkoret är sant. Om villkoret utvärderas som falskt, stoppas exekveringen och kontrollen övergår till satsen efter do…while-loopen. Koden i en do…while-loop garanteras att köras minst en gång, även om villkoret är falskt.

    Exempel på do…while

    let n = 0;
    do {
      n += 1;
      console.log(n);
    } while (n < 7);
    

    I denna kod:

    • En variabel n initieras med värdet 0 (let n=0).
    • Variabeln n går in i en do…while-loop, där värdet ökar med 1 efter varje iteration (n+=1).
    • Värdet av n loggas.
    • Loopen fortsätter att köras så länge n är mindre än 7 (n < 7).

    När koden körs visas värden för n från 1 till 7 i konsolen eftersom loopen körs 7 gånger.

    Kapslad loop

    En kapslad loop är när en loop finns inuti en annan loop. Till exempel kan en for-loop finnas inuti en annan for-loop.

    for (let outer = 0; outer < 5; outer += 2) {
      for (let inner = 0; inner < 6; inner += 2) {
        console.log(`${outer}-${inner}`);
      }
    }
    
    • Två variabler, outer och inner, initieras båda med värdet noll.
    • Båda variablerna ökar med 2 efter varje iteration.
    • De yttre och inre looparna itererar tre gånger vardera.

    Loopkontrollsatser

    Loopkontrollsatser, ibland kallade ”hopp-satser”, avbryter det normala flödet i ett program. Break och continue är exempel på loopkontrollsatser.

    Break-satser

    Break-satser avslutar omedelbart en loop, även om villkoret inte är uppfyllt.

    for (let n = 1; n <= 26; n++) {
      if (n === 13) {
        console.log("Loopen stannar här. Vi har nått break-satsen");
        break;
      }
      console.log(n);
    }
    

    Den renderade koden kommer att visa:

    Continue-satser

    Continue-satser används för att hoppa över ett visst kodblock och utföra iterationen med nästa loop.

    for (let n = 0; n <= 10; n++) {
      if (n === 5) {
        continue;
      }
      console.log(n);
    }
    

    Den renderade koden kommer att visa:

    Slutsats

    Ovanstående är de vanligaste looparna du kommer att stöta på i ren JavaScript och dess ramverk/bibliotek. Varje looptyp har sina specifika användningsområden och beteenden. Om du väljer fel looptyp kan du stöta på buggar och din kod kan visa oväntat beteende.

    När du arbetar med ett JavaScript-ramverk eller -bibliotek, se alltid dess dokumentation och använd de inbyggda looparna.