Cum se configurează smartphone-uri și PC-uri. Portal informativ

Cicluri și iterații. JavaScript - Bucle

Buclele sunt unul dintre cele mai importante instrumente de programare. Sunt utile în cazurile în care trebuie să faceți ceva de un anumit număr de ori.

Dacă există o astfel de sarcină, de exemplu, afișați șirul „bună ziua tuturor” de 1000 de ori. Apoi, fără a folosi o buclă, în primul rând va dura mult timp și în al doilea rând, nu va arăta foarte frumos. De aceea ciclurile trebuie să știe perfect pentru că sunt folosite foarte, foarte des.

Există patru cicluri în programare, ele sunt în timp, în timp ce, pentru și pentru fiecare. Fiecare dintre ele are propria sa sintaxă și fiecare este folosit în anumite cazuri.

Cele mai frecvent utilizate bucle sunt for și foreach, apoi while, iar bucla do-while este foarte rară.

Și vom începe cu o buclă while.

Sintaxa buclei while este următoarea:


Mai întâi, declarăm variabila i, care este un contor, iar în interiorul buclei incrementăm acest contor. În paranteze scriem condiția de intrare/ieșire din buclă.

Cometariu! Scrieți corect condiția de ieșire, altfel se poate dovedi buclă infinită și apoi scriptul se va bloca. Un astfel de ciclu se poate întâmpla dacă, de exemplu, în condiția de ieșire, scriem pur și simplu adevărat.

De exemplu, să afișăm șirul „Salut tuturor!” 10 ori.

Vari = 0; în timp ce(i "); i++; )

Variabila i poate începe de la 0 sau 1 sau orice alt număr.

Condiția de ieșire este și condiția de intrare. Bucla funcționează astfel: În primul rând, verifică dacă variabila i este mai mică de 10, iar dacă condiția este adevărată, atunci intrăm în buclă, în caz contrar, nu. În acest caz, dacă variabila i este egală cu 30, de exemplu, atunci bucla nu va fi executată, deoarece 30 nu este mai mic de 10.

Am intrat în ciclu, am afișat linia „Bună ziua tuturor”, am incrementat contorul și din nou mergem la condiția, unde verificăm din nou dacă valoarea variabilei i este mai mică de 10, apoi intrăm în ciclu, altfel ieșim din el. Și asta se întâmplă până în momentul în care condiția de intrare devine falsă, adică valoarea variabilei i va fi 10. 10 nu este mai mic de 10, așa că nu mai intrăm în buclă, ci mergem mai departe.

Cometariu! Nu uitați să creșteți contorul (i++), altfel veți ajunge din nou cu o buclă infinită.

Ne-am dat seama de bucla while, acum să trecem la bucla do-while.

Sintaxa pentru o buclă do-while este următoarea:


Diferența dintre o buclă while și o buclă do-while este că o buclă do-while se poate executa cel puțin o dată, indiferent de condiție, în timp ce o buclă while, dacă condiția este falsă, nu se va executa deloc.

Cometariu! La fel ca în bucla while, nu uitați să creșteți contorul i.

Să trecem la practică. De exemplu, luați în considerare produsul numerelor de la 1 la 10.

Vari = 1; var productie = 1; do( producție *= i; i++; )în timp ce(i

Rezultatul va fi numărul 3628800. La primul pas, am intrat imediat în buclă, în ciuda stării sale, unde a fost efectuată operația producție *= i (aceasta este aceeași cu producția = producție * 1). Apoi creștem contorul. După incrementare, are valoarea 2. Iar la final, verificăm condiția, dacă valoarea contorului este mai mică sau egală cu 10, atunci trecem la următoarea iterație a buclei, altfel ieșim din buclă și trecem. pe.

pentru buclă

După cum am scris mai sus, bucla for este destul de comună, așa că trebuie să o cunoașteți foarte bine.

sintaxa buclei for Următorul:


Pentru o mai bună înțelegere, să rezolvăm o problemă simplă. Să presupunem că trebuie să calculăm suma numerelor de la 1 la 1000 folosind o buclă for.

varsum = 0; pentru(var i = 1; i

Salvăm documentul, îl deschidem în browser și vedem că rezultatul este 500500.

Cometariu! Dacă există o singură instrucțiune în buclă, atunci acoladele sunt opționale.

Pentru a demonstra, să afișăm pe ecran de 5 ori, un șir, de exemplu „Bună ziua!”.

Pentru(var i = 1; i

Cometariu! După executarea buclei în variabila i, rămâne ultima valoare.

Acum să rezolvăm problema puțin mai complicată, de exemplu, trebuie să afișăm șirul „Bună ziua” de 100 de ori. Și pentru ca toate acestea să nu fie afișate pe un rând, apoi după fiecare a 10-a iterație, vom trece la o nouă linie. Și la final vom afișa valoarea variabilei i.

Pentru(var i = 1; i<= 100; i++){ document.write("привет!"); if(i % 10 == 0)  document.write("
"); ) document.write("

Variabila i = " + i + "

"); // i = 101

bucla foreach folosit în mod obișnuit pentru a itera obiecte și matrice. Prin urmare, voi vorbi despre asta într-un articol care descrie lucrul cu matrice.

declarație de pauză conceput pentru a forța ieșirea din buclă.

continua declarația vă permite să întrerupeți iterația curentă a buclei și să treceți la următoarea.

Pentru o mai bună înțelegere, vom rezolva și o problemă simplă. Să presupunem că vrem să calculăm suma numerelor impare de la 1 la 20. Și când ajungem la a 15-a iterație, ieșim din buclă.

varsum = 0; pentru(var i = 1; i<= 20; i++){ //Пропускаем текущею итерацию цикла if(i % 2 == 0) continue; summa += i; //Выходим совсем из цикла. if(i == 15) break; document.write(i + ". Итерация
"); ) document.write("

summa= " + suma + "

"); //sumă = 64

Salvăm documentul, îl deschidem în browser și ne uităm la rezultat.

Pentru practică, încercați să schimbați scriptul scris astfel încât să calculeze suma numerelor pare.

Aici se termină acest articol. Acum știi sintaxa while, do-while, bucle pentru și cum să lucrați cu ele. De asemenea, întâlnit cu întrerupeți și continuați declarațiile.

Cicluri

Pentru a înțelege efectul declarațiilor condiționale, ne-am propus să le gândim ca bifurcări de-a lungul drumului pe care se deplasează interpretul JavaScript. Buclele pot fi gândite ca o inversare a drumului care face ca interpretul să treacă în mod repetat prin aceeași bucată de cod.

JavaScript are patru bucle: while, do/while, for și for/in. Fiecare dintre ele este dedicată una dintre următoarele subsecțiuni. O utilizare obișnuită pentru bucle este de a repeta elementele unui tablou.

buclă while

Instrucțiunea if este instrucțiunea condițională de bază în JavaScript, iar bucla de bază pentru JavaScript este bucla while. Are următoarea sintaxă:

în timp ce (expresie) (enunț)

Bucla while începe prin evaluarea expresiei. Dacă această expresie este falsă, interpretul omite instrucțiunea care alcătuiește corpul buclei și trece la următoarea instrucțiune din program. Dacă expresia este evaluată la adevărat, atunci instrucțiunea care formează corpul buclei este executată, atunci controlul este transferat la începutul buclei și expresia este evaluată din nou. Cu alte cuvinte, interpretul execută declarația corpului buclei din nou și din nou atâta timp cât valoarea expresiei rămâne adevărată. Rețineți că este posibil să creați o buclă infinită folosind sintaxa while(true).

De obicei, nu doriți ca interpretul JavaScript să efectueze aceeași operație din nou și din nou. În aproape fiecare buclă, cu fiecare iterație a buclei, una sau mai multe variabile își schimbă valorile. Deoarece variabila se modifică, acțiunile pe care le întreprinde instrucțiunea la fiecare trecere a corpului buclei pot fi diferite.

De asemenea, dacă variabila (sau variabilele) modificate este prezentă în expresie, valoarea expresiei se poate schimba la fiecare iterație a buclei. Acest lucru este important pentru că în caz contrar, expresia a cărei valoare a fost adevărată nu se va schimba niciodată și bucla nu se va termina niciodată! Următorul este un exemplu de buclă while care tipărește numerele de la 0 la 9:

var count = 0; în timp ce (număr

După cum puteți vedea, numărul este inițial setat la 0 și apoi este incrementat de fiecare dată când corpul buclei este executat. După ce bucla a fost executată de 10 ori, expresia va returna fals (adică, variabila de numărare nu mai este mai mică de 10), instrucțiunea while se va termina și interpretul va trece la următoarea instrucțiune din program. Cele mai multe bucle au variabile de contor similare cu numărarea. Cele mai comune variabile pentru contoarele de buclă sunt i, j și k, deși pentru a face codul mai ușor de înțeles, ar trebui să dați contoarelor nume mai descriptive.

bucla do/while

Bucla do/while este similară cu bucla while în multe feluri, cu excepția faptului că expresia buclei este testată la sfârșit și nu la început. Aceasta înseamnă că corpul buclei este întotdeauna executat cel puțin o dată. Această instrucțiune are următoarea sintaxă:

do ( statement ) while (expresie);

Bucla do/while este folosită mai puțin frecvent decât bucla while sora sa. Faptul este că, în practică, situația în care sunteți sigur în prealabil că va trebui să executați corpul buclei cel puțin o dată este oarecum neobișnuită. Următorul este un exemplu de utilizare a unei bucle do/while:

Funcția printArray(a) ( var len = a.length, i = 0; if (len == 0) console.log(„Matrice goală”); else (do ( console.log(a[i]); ) while (++i

Există două diferențe între o buclă do/while și o buclă obișnuită while. În primul rând, bucla do necesită atât cuvântul cheie do (pentru a marca începutul buclei), cât și cuvântul cheie while (pentru a marca sfârșitul buclei și pentru a specifica o condiție). În al doilea rând, spre deosebire de o buclă while, o buclă do se termină cu punct și virgulă. O buclă while nu trebuie să se termine cu punct și virgulă dacă corpul buclei este închis între acolade.

pentru buclă

Bucla for este o construcție de buclă care este adesea mai convenabilă decât o buclă while. Bucla for facilitează construirea de bucle care urmează un model comun pentru majoritatea buclelor. Majoritatea buclelor au un fel de variabilă contor. Această variabilă este inițializată înainte de începerea buclei și verificată înainte de fiecare iterație. În cele din urmă, variabila contor este incrementată sau modificată în alt mod la sfârșitul corpului buclei, chiar înainte ca variabila să fie reverificată. Inițializarea, verificarea și actualizarea sunt cele trei operații cheie efectuate asupra variabilei buclei. Declarația for face din acești trei pași o parte explicită a sintaxei buclei:

pentru(inițializare; verificare; creștere) ( declarație )

Inițializarea, testarea și creșterea sunt trei expresii (separate prin punct și virgulă) care sunt responsabile pentru inițializarea, testarea și creșterea variabilei buclei. Punerea lor pe prima linie a buclei face mai ușor de înțeles ce face bucla for și vă împiedică să uitați să inițializați sau să incrementați variabila buclă.

Cel mai simplu mod de a explica cum funcționează o buclă for este să arăți echivalentul ei buclă while:

initializare; while(bifează) ( declarație; creștere; )

Cu alte cuvinte, expresia de inițializare este evaluată o dată înainte de a începe bucla. Această expresie este de obicei o expresie cu efecte secundare (de obicei o sarcină). JavaScript permite, de asemenea, ca o expresie de inițializare să fie o declarație var, astfel încât este posibil să declarați și să inițializați un contor de bucle în același timp.

Expresia test este evaluată înainte de fiecare iterație și determină dacă corpul buclei va fi executat. Dacă testul se evaluează la adevărat, se execută instrucțiunea care este corpul buclei. La sfârșitul buclei, se evaluează expresia de increment. Pentru ca această expresie să aibă sens, trebuie să fie o expresie cu efecte secundare. Aceasta este de obicei fie o expresie de atribuire, fie o expresie care utilizează operatorul ++ sau --.

De asemenea, puteți scoate numere de la 0 la 9 folosind o buclă for, așa cum se arată mai jos, spre deosebire de bucla while echivalentă prezentată în exemplul anterior:

Pentru (var count = 0; count

Desigur, buclele pot fi mult mai complexe decât aceste exemple simple și, uneori, mai multe variabile se schimbă în fiecare iterație a buclei. Această situație este singurul caz în JavaScript în care operatorul „virgulă” este adesea folosit - vă permite să combinați mai multe expresii de inițializare și incrementare într-o singură expresie potrivită pentru utilizare într-o buclă for:

Var i,j; pentru (i = 0, j = 0; i

pentru/în buclă

Bucla for/in folosește cuvântul cheie for, dar este fundamental diferită de o buclă normală for. Bucla for/in are următoarea sintaxă:

pentru (variabilă în obiect) ( declarație )

Variabila de aici este de obicei numele unei variabile, dar puteți folosi și o instrucțiune var care declară o singură variabilă. Parametrul obiect este o expresie care returnează un obiect. Și, ca de obicei, o instrucțiune este o instrucțiune sau un bloc de instrucțiuni care formează corpul buclei.

Pentru a itera elementele unei matrice, este firesc să folosiți o buclă for obișnuită:

Var arr = ; pentru (var i = 0; i

De asemenea, instrucțiunea for/in vă permite în mod natural să traversați proprietățile unui obiect:

// Creați un nou obiect var obj = (nume:"Alex", parola:"12345" ); pentru (var i în obj) ( // Imprimă valoarea fiecărei proprietăți obiect console.log(obj[i]); )

Pentru a executa o instrucțiune for/in, interpretul JavaScript evaluează mai întâi obiectul expresie. Dacă returnează nul sau nedefinit, interpretul omite bucla și trece la următoarea instrucțiune. Dacă expresia returnează o valoare simplă, aceasta este convertită în obiectul wrapper echivalent. În caz contrar, expresia returnează un obiect. Interpretul efectuează apoi o iterație a buclei pentru fiecare proprietate a obiectului enumerabil. Înainte de fiecare iterație, interpretul evaluează valoarea expresiei, o stochează într-o variabilă și îi atribuie un nume de proprietate (valoare șir).

O buclă este o instrucțiune de control care vă permite să repetați execuția codului de program de un anumit număr de ori. Fiecare execuție individuală a instrucțiunilor din corpul buclei se numește iterație.

buclă while

sintaxa buclei while:

Expresia din paranteze se numește conditie de indeplinire buclă sau condiție pe scurt. În primul rând, se evaluează valoarea expresiei. Valoarea rezultată, dacă este necesar, este implicit convertită într-un tip boolean. Dacă rezultatul evaluării expresiei este adevărat, atunci instrucțiunea situată în corpul buclei este executată, atunci controlul este transferat la începutul buclei și condiția este evaluată din nou. Dacă expresia este evaluată la false , interpretul încheie bucla și continuă să execute instrucțiunea care urmează buclei. Astfel, interpretul execută codul din corpul buclei din nou și din nou, atâta timp cât condiția rămâne adevărată:

Vari = 0; in timp ce eu< 3) { // Выполнять код, пока значение переменной i меньше 3 alert("i: " + i); i++; // Увеличиваем значение переменной i }

bucla do-while

Sintaxa buclei do-while:

Bucla do-while este similară cu bucla while, cu excepția faptului că condiția buclei este verificată după prima iterație în loc de înaintea acesteia, iar bucla se termină cu punct și virgulă. Deoarece condiția este verificată după iterare, codul din corpul buclei do-while este întotdeauna executat cel puțin o dată:

var count = 0; do ( document.write(count + " "); count++; ) while(count< 5); Попробовать »

Această buclă poate fi utilă atunci când codul din corpul buclei trebuie executat cel puțin o dată, indiferent de condiția de execuție.

pentru buclă

Sintaxa buclei:

Bucla for conține trei expresii separate prin punct și virgulă. Aceste trei expresii au următoarea ordine de execuție:

  1. Prima expresie este întotdeauna evaluată o singură dată - înainte de prima iterație. Prin urmare, de obicei prima expresie este definiția unei variabile, care este folosită ca numărător în condiția de execuție a buclei.
  2. A doua expresie definește condiția pentru executarea buclei. Este evaluat înainte de fiecare iterație și determină dacă corpul buclei va fi executat. Dacă expresia este evaluată la o valoare adevărată, codul din corpul buclei este executat. Dacă se returnează false, bucla se termină și controlul trece la următoarea instrucțiune după buclă. Dacă condiția este falsă la prima verificare a condiției, codul din corpul buclei nu va fi executat niciodată.
  3. După fiecare iterație, a treia expresie este evaluată. Este de obicei folosit pentru a modifica valoarea unei variabile care este utilizată în testul buclei.

Exemplu de buclă:

Pentru (var count = 0; count< 5; count++) document.write(count + " "); Попробовать »

După cum puteți vedea din exemplu, bucla for, spre deosebire de alte bucle, vă permite să grupați codul asociat buclei într-un singur loc.

Oricare dintre expresiile din bucla for poate lipsi, dar punctele și virgulă în sine trebuie să fie prezente, altfel va exista o eroare de sintaxă. În absența celei de-a doua expresii, bucla va rula pe termen nelimitat.

Vari = 0; pentru (;i< 4; i++) ... var i = 0; for (; i < 4;) ... for (var i = 1; /* нет условия */ ; i++) ... // Это эквивалентно следующему коду for (var i = 1; true; i++) ...

În loc de o expresie, puteți specifica mai multe expresii, separându-le cu operatorul virgulă.

// nu va fi executat deoarece ultima expresie din verificarea condiției este falsă pentru (i = 1; i< 4, false; i++) ... for (var i = 1, j = 5; i <= 5; i++, j--) document.write(i + " " + j +"
"); Încerca "

bucla for-in

Bucla for-in este folosită pentru a repeta aleatoriu peste proprietățile enumerate ale unui obiect și are următoarea sintaxă:

For (variabilă în obiect) instrucțiune;

În stânga cuvântului cheie in este numele variabilei, căruia îi este atribuit ca șir numele uneia dintre proprietățile obiectului înainte de fiecare iterație a buclei. În dreapta cuvântului cheie in se află un obiect ale cărui proprietăți vor fi repetate de către buclă. Bucla va rula până când toate proprietățile disponibile vor fi iterate. Dacă variabila care reprezintă obiectul este nulă sau nedefinită, bucla nu se va executa niciodată:

var obj = (x: 5, y: 10); pentru (var prop în obj) ( alert(prop); )

Pentru a păstra codul asociat buclei într-un singur loc, este permisă declararea unei variabile în bucla for-in. Prin urmare, expresia dinaintea cuvântului cheie in este de obicei o declarație a unei variabile căreia îi vor fi atribuite nume de proprietate.

Buclele sunt concepute pentru a executa aceleași instrucțiuni în mod repetat.

Există 4 tipuri de bucle în JavaScript:

  • pentru buclă. Această buclă este utilizată atunci când se cunoaște numărul exact de repetări ale acelorași instrucțiuni.
  • buclă while. Este conceput pentru a executa aceleași instrucțiuni atâta timp cât condiția dată este adevărată.
  • face...while bucla. Această buclă este similară cu bucla while, dar condiția este verificată nu înainte de executarea instrucțiunilor repetate, ci după acestea. Astfel, spre deosebire de o buclă while, chiar dacă condiția este inițial falsă, instrucțiunile vor fi executate cel puțin o dată.
  • pentru...în buclă. Este folosit atunci când este necesar să se itera toate proprietățile dintr-un obiect sau fiecare element dintr-o matrice.

pentru buclă

Sintaxa buclei:

Pentru (inițializare; condiție; expresie finală) ( /* corpul buclei */ )

  • inițializarea este o expresie care este executată o dată înainte de executarea buclei; folosit de obicei pentru a inițializa un contor;
  • condiția este o expresie, al cărei adevăr este verificat înainte de fiecare iterație; dacă expresia se evaluează la adevărat, atunci iterația este efectuată, în caz contrar bucla for iese;
  • expresie finală este o expresie care se execută la sfârșitul fiecărei iterații; folosit de obicei pentru a schimba contorul;
  • corpul buclei - instrucțiuni care trebuie repetate.

Să luăm în considerare un exemplu de buclă care va imprima numerele de la 1 la 9 pe consolă:

Vari; // bucla for de la 1 la 9, cu pasul 1 pentru (i = 1; i<= 9; i++) { console.log(i); }

În acest exemplu:

  • initializare: i = 1 (atribuirea valorii 1 variabilei i);
  • condiția de terminare a buclei: i<= 9 (значение переменной i не меньше 9);
  • expresie care urmează să fie executată la sfârșitul fiecărei iterații: i++ (creșteți valoarea variabilei i cu 1);
  • instructiuni de urmat: console.log(i) (tipărirea valorii contorului pe consolă).

Părți opționale ale buclei for

În pentru , blocul de inițializare este opțional.

Vari = 1; // buclă pentru for (; i<= 9; i++) { console.log(i); }

Blocul de condiții din bucla for este, de asemenea, opțional. Fără condiție, bucla va rula de un număr infinit de ori. În acest caz, pentru a-l întrerupe (ieși din buclă), trebuie să utilizați instrucțiunea break.

Vari; // Buclă for for (i = 1; ; i++) ( dacă (i > 9) ( // break condition break; ) console.log(i); )

Expresia finală în for este, de asemenea, opțională. În acest caz, contorul de bucle poate fi schimbat, de exemplu, în corp.

Vari; // bucla for for (i = 1; i<= 9 ;) { console.log(i); i++; }

În general, puteți omite 3 expresii:

Vari = 1; // Buclă pentru for (; ;) ( if (i > 9) ( break; ) console.log(i); i++; )

O expresie goală (;) poate fi folosită ca corp al unei bucle for.

De exemplu:

Var arrA = , arrB = ; pentru (i = 0; i< arrA.length; arrB[i] = arrA / 2) ; console.log(arrB); //

Exemple de utilizare pentru

Folosind o buclă for pentru a itera elementele unui tablou:

Var arr = , // array i = 0, // counter lenArr = arr.length; // lungimea matricei pentru (i; i< lenArr; i++) { console.log(arr[i]); }

întrerupeți și continuați declarațiile

În plus, instrucțiuni speciale break și continue pot fi folosite în corpul buclelor.

Instrucțiunea break are scopul de a termina execuția buclei. Acestea. iese din bucla curentă și transferă controlul instrucțiunii care o urmează.

Instrucțiunea continue întrerupe execuția iterației curente a buclei și trece la următoarea.

Un exemplu în care afișăm numere impare de la 1 la 11 în consolă:

Vari; pentru (i = 1; i <= 11; i++) ( // dacă numărul din variabila i este par, atunci treceți la următoarea iterație dacă (i %2 === 0) ( continua; ) // imprimați valoarea variabilei i către consola console.log(i); ) // 1, 3, 5, 7, 9, 11

Buclă cu condiția prealabilă while

Bucla while execută aceleași instrucțiuni (corpul buclei) atâta timp cât o condiție este adevărată. Adevărul condiției este verificat înainte de fiecare execuție a corpului buclei. Dacă condiția este falsă înainte de prima iterație, atunci bucla nu este executată niciodată.

// declararea unei variabile a și atribuirea acesteia la valoarea 0 var a=0; // buclă while cu condiția a

Buclă cu do...while postcondition

Bucla do...while, ca și bucla while, execută aceleași instrucțiuni (corpul buclei) atâta timp cât o condiție este adevărată. Dar, spre deosebire de bucla while, în bucla do...while, condiția este verificată după fiecare execuție a corpului buclei. Chiar dacă condiția este inițial falsă, corpul buclei va fi totuși executat o dată (deoarece condiția este verificată după ce corpul buclei este executat).

// declararea unei variabile a și atribuirea acesteia la valoarea 0 var a=0; //do...while buclă cu condiția a

După cum sa menționat mai sus, bucla for...in este folosită pentru a itera elementele unui tablou și proprietățile unui obiect. În această lecție, vom acoperi doar sintaxa generală a buclei for...in și o vom cunoaște mai detaliat în lecțiile următoare.

Principiul buclei for...in este că variabila x preia toate numele proprietăților obiectului y sau indicii tabloului y . Astfel, în fiecare iterație, o proprietate de obiect sau un element de matrice vă este disponibil.

Buclele sunt o modalitate ușoară de a face ceva de mai multe ori. Acest capitol al Ghidului JavaScript vă va prezenta diferiții operatori disponibili în JavaScript.

Te poți gândi la buclă ca la o versiune computerizată a jocului în care îi spui cuiva să facă X pași într-o direcție, apoi Y pași în cealaltă; de exemplu, ideea jocului „Du-te cu 5 pași spre est” poate fi exprimată ca o buclă:

Varstep; pentru (pas = 0; pas< 5; step++) { // Запускается 5 раз, с шагом от 0 до 4. console.log("Идём 1 шаг на восток"); }

Există multe tipuri diferite de bucle, dar toate fac în esență același lucru: repetă unele acțiuni de mai multe ori (nu uitați de timpul de repetare zero, numărătoarea inversă din matrice începe de la 0). Buclele cu structură diferită oferă modalități diferite de a determina începutul și sfârșitul unei bucle. Pentru diverse sarcini de programare, există proprii operatori de buclă, cu ajutorul cărora se rezolvă mult mai ușor.

Instrucțiuni în buclă în JavaScript:

pentru buclă

Ciclu pentru repetă acțiunile până când apare un eveniment special de terminare a buclei. Declarația for din JavaScript este similară cu instrucțiunea for din Java și C. Declarația for din instrucțiunea arată astfel:

Pentru ([început]; [condiție]; [pas]) expresii

Când este executat, se întâmplă următoarele:

  1. Expresia de pornire este executată, dacă este specificată. Această expresie inițializează de obicei unul sau mai multe contoare, dar sintaxa permite expresiei să fie de orice complexitate. De asemenea, folosit pentru a declara variabile.
  2. Condiția este îndeplinită. Dacă condiția este adevărată, atunci expresiile sunt executate. Dacă este fals, bucla for este încheiată. Dacă condiția este complet omisă, atunci este considerată adevărată.
  3. Expresiile sunt executate. Pentru a executa mai multe expresii, se folosește o expresie bloc ( ... ) pentru a grupa expresii.
  4. Actualizează pasul, dacă există, apoi revine la pasul 2.

Exemplu

Următoarea funcție are o buclă for care numără numărul de genuri selectate din lista de defilare (elementul este un control care conține un meniu de opțiuni:"> , execută instrucțiunea if și incrementează i cu unul după fiecare iterație a buclei.

face...while bucla

Bucla do...while se repetă în timp ce condiția dată este adevărată. Declarația do...while arată astfel:

Faceți expresii while (condiție);

expresiile sunt executate în timp ce condiția este adevărată. Pentru a utiliza mai multe expresii, utilizați o expresie bloc ( ... ) pentru a le grupa. Dacă condiția este adevărată, expresiile vor fi executate din nou. La sfârșitul fiecărei treceri se verifică starea. Dacă condiția este falsă, execuția este suspendată și controlul este transferat expresiei după do...while .

Exemplu

În exemplul următor, bucla do se va executa cel puțin o dată și va rula din nou atâta timp cât i este mai mic de 5.

Do ( i += 1; console.log(i); ) în timp ce (i< 5);

buclă while

Bucla while execută expresii în timp ce condiția este adevărată. Arata cam asa:

În timp ce (condiție) expresii

Dacă condiția devine falsă, expresiile din buclă se opresc din executare și controlul trece la expresia după buclă.

Condiția este verificată pentru adevăr înainte ca expresiile din buclă să fie executate. Dacă condiția este adevărată, expresiile sunt executate și apoi condiția este testată din nou. Dacă condiția este falsă, execuția este suspendată și controlul trece la expresia după while .

Pentru a utiliza mai multe expresii, utilizați un bloc de expresii ( ... ) pentru a le grupa.

Exemplul 1

Următoarea buclă while rulează atâta timp cât n este mai mic de trei:

Varn = 0; var x = 0; în timp ce (n< 3) { n++; x += n; }

Cu fiecare iterație, bucla crește n și adaugă acea valoare la x . Prin urmare, x și n obțin următoarele valori:

  • După prima trecere: n = 1 și x = 1
  • După al doilea: n = 2 și x = 3
  • După a treia trecere: n = 3 și x = 6

După a treia trecere, condiția n< 3 становится ложным, поэтому цикл прерывается.

Exemplul 2

Evitați buclele infinite. Asigurați-vă că condiția buclei devine în cele din urmă falsă; altfel, ciclul nu se va rupe niciodată. Expresiile din următoarea buclă while vor rula pentru totdeauna, deoarece condiția nu va deveni niciodată falsă:

În timp ce (adevărat) ( ​​console.log ("Bună ziua, lume"); )

Eticheta

O etichetă este o declarație cu un identificator care vă permite să faceți referire la o locație din programul dvs. De exemplu, puteți folosi o etichetă pentru a indica o buclă și apoi utilizați instrucțiuni break sau continue pentru a indica dacă programul trebuie să întrerupă bucla sau să o continue executarea.

Sintaxa etichetei este următoarea:

Etichetă: operator

Sens etichete poate fi orice identificator JavaScript valid care nu este un cuvânt rezervat. Operator , cea pe care o specificați după etichetă poate fi orice expresie.

Exemplu

În acest exemplu, eticheta markLoop denotă o buclă while.

MarkLoop: while (theMark == true) (​do Something(); )

pauză

Utilizați instrucțiunea break pentru a întrerupe o buclă, a comuta controlul sau în combinație cu o instrucțiune etichetă.

  • Când utilizați break fără etichetă, întrerupe buclele while , do-while și for sau trece imediat controlul la următoarea instrucțiune.
  • Când folosiți break cu o etichetă, se rupe expresia special marcată.

Sintaxa operatorului poate fi:

  1. pauză;
  2. pauză Eticheta;

Prima formă a sintaxei rupe bucla cu totul sau comută controlul; a doua rupe expresia special marcată.

Exemplu 1

Următorul exemplu iterează prin elementele dintr-o matrice până găsește un element a cărui valoare este theValue:

Pentru (i = 0; i< a.length; i++) { if (a[i] == theValue) { break; } }

Exemplul 2: Etichetați întrerupere

var x = 0; var z = 0 labelCancelLoops: while (true) ( ​​​​console.log ("Bucla exterioară: " + x); x += 1; z = 1; while (adevărat) ( ​​console.log ("Bucla interioară: " + z) ;z += 1;if (z === 10 && x === 10) ( break labelCancelLoops; ) else if (z === 10) ( break; ) ) )

continua

Declarația continue este folosită pentru a avansa în while , do-while , pentru bucle sau pentru a sări la o etichetă.

  • Când utilizați continue fără etichetă, întrerupe iterația curentă a buclelor while , do-while și for și continuă bucla la următoarea iterație. Spre deosebire de break , continue nu rupe complet bucla. În bucla while, trece la condiția. Și pentru a crește pasul.
  • Când utilizați Continuare cu o etichetă, aceasta se aplică buclei cu acea etichetă.

Sintaxa de continuare ar putea arăta astfel:

  1. continua;
  2. continua Eticheta ;

Exemplul 1

Următorul exemplu arată o buclă while cu o instrucțiune continue care rulează atunci când valoarea lui i este 3. Deci n primește valorile 1, 3, 7 și 12.

Vari = 0; varn = 0; in timp ce eu< 5) { i++; if (i == 3) { continue; } n += i; }

Exemplul 2

Expresia marcată checkiandj conţine o expresie marcată verificaj. La întâlnirea continue , programul încheie iterația curentă verificajși începe următoarea iterație. De fiecare dată când întâlniți, continuați, verificaj trece la următoarea iterație în timp ce condiția revine false. Când se returnează false după calcularea restului unei diviziuni checkiandj, checkiandj trece la următoarea iterație atâta timp cât condiția sa revine false. Când este returnat false, programul continuă execuția din expresia după checkiandj.

Dacă continuare este etichetat checkiandj, programul poate continua de la începutul etichetei checkiandj.

Checkiandj: în timp ce (i< 4) { console.log(i); i += 1; checkj: while (j >4) ( console.log(j); j -= 1; if ((j % 2) != 0) ( continua verificarea j; ) console.log(j + " even."); ) console.log ("i =" + i); console.log("j = " + j); )

pentru...în

Instrucțiunea for...in iterează peste toate proprietățile enumerabile ale unui obiect. JavaScript va executa expresiile specificate pentru fiecare proprietate individuală. Bucla for...in arată astfel:

Pentru (variabilă în obiect) (expresii)

Exemplu

Următoarea funcție ia ca argument un obiect și numele acestuia. Apoi parcurge toate proprietățile obiectului și returnează un șir care conține numele proprietăților și valorile acestora.

Funcția dump_props(obj, obj_name) ( var rezultat = ""; for (var i in obj) (rezultat += obj_name + "." + i + " = " + obj[i] + "
"; ) rezultat += "


"; returnează rezultatul; )

Pentru un obiect auto cu proprietăți de marcă și model, rezultat voi:

mașină.facă = mașină Ford.model = Mustang

Exemplul #2

De asemenea, prin tastă, puteți afișa valoarea:

Fiți obj = (model: „AUDI A8”, anul: „2019”, culoare: „maro”) pentru (cheie în obj) ( console.log(`$(key) = $(obj)`); ) // model = AUDI A8 // an = 2019 // culoare = maro

Matrice

Deși este foarte tentant de utilizat pentru...în ca o modalitate de a itera prin toate elementele unui Array , acest operator returnează numele proprietăților definite de utilizator în plus față de indecșii numerici. Astfel, este mai bine să folosiți standardul for pentru indici numerici atunci când interacționați cu matrice, deoarece operatorul pentru...în traversează proprietățile definite de utilizator în plus față de elementele matricei dacă modificați matricea, cum ar fi adăugarea de proprietăți și metode.

Pentru( variabile de obiect) { expresii}

Următorul exemplu arată diferența dintre for...of și for...in bucle. În timp ce pentru...în iterează peste numele proprietăților, for...of iterează peste valorile proprietăților:

Fie arr = ; arr.foo = „bună ziua”; pentru (lasă i în arr) ( console.log(i); // scoate „0”, „1”, „2”, „foo” ) pentru (lasă i din arr) ( console.log(i); / / iese „3”, „5”, „7” )

Top articole similare