Prisilno izlazak iz petlje u javascriptu. Za petlje u JavaScriptu

Petlja je kontrolna instrukcija koja vam omogućava da ponovite izvršavanje programskog koda određeni broj puta. Svako pojedinačno izvršavanje instrukcija u tijelu petlje naziva se iteracija.

while petlja

Sintaksa while petlje:

Izraz u zagradama se zove uslov za ispunjenje ciklus ili kratko stanje. Prvo se izračunava vrijednost izraza. Rezultirajuća vrijednost se implicitno pretvara u Boolean tip ako je potrebno. Ako je rezultat evaluacije izraza istinit , tada se izvršava instrukcija koja se nalazi u tijelu petlje, zatim se kontrola prenosi na početak petlje i uvjet se ponovo evaluira. Ako je rezultat evaluacije izraza lažan, tumač završava petlju i nastavlja s izvršavanjem naredbe koja slijedi nakon petlje. Dakle, interpretator izvršava kod koji se nalazi u tijelu petlje iznova i iznova sve dok uvjet ostaje istinit:

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

uradi-while petlja

Sintaksa Do-while petlje:

Do-while petlja je slična while petlji, osim što se uvjet petlje provjerava nakon prve iteracije, a ne prije, a petlja se završava tačkom i zarezom. Pošto se uslov provjerava nakon iteracije, kod u tijelu do-while petlje se uvijek izvršava barem jednom:

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

Ova petlja može biti korisna kada se kod u tijelu petlje mora izvršiti barem jednom, bez obzira na uvjet izvršenja.

za petlju

Za sintaksu petlje:

Petlja for sadrži tri izraza odvojena tačkom i zarezom. Ova tri izraza imaju sljedeći redoslijed izvršavanja:

  1. Prvi izraz se uvijek evaluira samo jednom - prije prve iteracije. Stoga je obično prvi izraz definicija varijable koja se koristi u uvjetima izvršavanja petlje kao brojač.
  2. Drugi izraz definira uvjet za izvršavanje petlje. Izračunava se prije svake iteracije i određuje da li će tijelo petlje biti izvršeno. Ako je izraz istinit, izvršava se kod u tijelu petlje. Ako se vrati false, petlja se završava i kontrola prelazi na sljedeću instrukciju nakon petlje. Ako se prvi put kada se uvjet provjeri, ispostavi da je netačan, kod u tijelu petlje neće biti izvršen ni jednom.
  3. Nakon svake iteracije, evaluira se treći izraz. Obično se koristi za promjenu vrijednosti varijable koja se koristi za testiranje stanja petlje.

Primjer za petlju:

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

Kao što možete vidjeti iz primjera, for petlja, za razliku od drugih petlji, omogućava vam da grupišete kod povezan s petljom na jednom mjestu.

Bilo koji od izraza u for petlji može nedostajati, ali same tačke i zareze moraju biti prisutne, inače će doći do sintaksičke greške. Ako nedostaje drugi izraz, petlja će se izvoditi zauvijek.

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

Umjesto jednog izraza, možete navesti nekoliko izraza, odvajajući ih operatorom zarezom.

// neće biti izvršen jer je posljednji izraz u provjeri uvjeta lažan za (i = 1; i< 4, false; i++) ... for (var i = 1, j = 5; i <= 5; i++, j--) document.write(i + " " + j +"
"); Pokušajte »

for-in petlja

For-in petlja se koristi za ponavljanje kroz nabrojana svojstva objekta slučajnim redoslijedom i ima sljedeću sintaksu:

For (varijabilna u objektu) iskaz;

Lijevo od ključne riječi in nalazi se ime varijable, kojem se kao niz dodjeljuje ime jednog od svojstava objekta prije početka svake iteracije petlje. Desno od ključne riječi in je objekat čija će se svojstva ponavljati kroz petlju. Petlja će se izvoditi dok se sva dostupna svojstva ne ponove. Ako je varijabla koja predstavlja objekt null ili nedefinirana, petlja se neće izvršiti ni jednom:

Var obj = (x: 5, y: 10); for (var prop u obj) ( alert(prop); )

Da zadržite kod povezan s petljom na jednom mjestu, možete deklarirati varijablu u for-in petlji. Stoga je izraz prije ključne riječi in obično deklaracija varijable kojoj će biti dodijeljena imena svojstava.

JavaScript petlje omogućavaju ponovljeno izvršavanje ponavljajućih proračuna. Optimiziraju proces kodiranja izvodeći istu naredbu ili blok naredbi koji formiraju tijelo petlje određeni broj puta (koristeći varijablu brojača) ili dok je određeni uvjet istinit. Petlje ponavljaju niz vrijednosti. Poziva se izvođenje petlje jednom iteracija.

Na performanse petlje utiče broj iteracija i broj operacija koje se izvode u telu petlje svake iteracije.

Sljedeći operatori petlje postoje u JavaScript-u:

1) for se koristi kada unapred znate koliko puta treba nešto da uradite;
2) for...in se koristi za prelaženje svojstava objekata;
3) while se koristi kada ne znate koliko puta treba nešto da uradite;
4) do...while radi slično kao naredba while. Razlika je u tome što do...while uvijek izvršava izraz unutar vitičastih zagrada barem jednom, čak i ako test uvjeta vrati false.

Vrste petlji u JavaScriptu, kontrola petlje

1. For petlja

Petlja for se koristi za ponavljanje kroz elemente nizova ili objekata nalik nizu kao što su argumenti i HTMLCollection. Uslov se provjerava prije svake iteracije petlje. Ako je provjera uspješna, izvršava se kod unutar petlje, u suprotnom se kod unutar petlje ne izvršava i program nastavlja iz prvog reda odmah nakon petlje.

Sljedeća petlja će ispisati red Zdravo, JavaScript! Pet puta.

Za (var i = 0; i< 5; i++) { console.log(i + ": Hello, JavaScript!"); } Rice. 1. Rezultat izvođenja for petlje na konzoli

1.1. Kako radi for petlja

For petlja se sastoji od tri različite operacije:

Korak 1. inicijalizacija var i = 0; — deklaracija varijable brojača koja će biti provjerena tokom izvršavanja petlje. Ova varijabla je inicijalizirana vrijednošću 0. Najčešće, varijable pod nazivom i, j i k djeluju kao brojači petlje.

Korak 2. provjera stanja i< 5; — условное выражение, если оно возвращает true , тело цикла (инструкция в фигурных скобках) будет выполнено. В данном примере проверка условия идёт до тех пор, пока значение счётчика меньше 5 .

Korak 3. završna operacija i++ - operacija povećanja brojača, povećava vrijednost varijable var i za jedan. Umjesto operacije povećanja, može se koristiti i operacija smanjenja.

Na kraju petlje, varijabla var i je pohranjena u 1. Sljedeća iteracija petlje se izvršava za (var i = 1; i< 5; i++) { } . Условное выражение вычисляется снова, чтобы проверить, является ли значение счётчика i всё ещё меньше 5 . Если это так, операторы в теле цикла выполняются ещё раз. Завершающая операция снова увеличивает значение переменной на единицу. Шаги 2 и 3 повторяются до тех пор, пока условие i < 5; возвращает true .

1.2. Ispis vrijednosti niza

Da biste ispisali vrijednosti niza pomoću for petlje, trebate koristiti svojstvo dužine niza. Ovo će vam pomoći da odredite broj elemenata u nizu i ponovite isti broj puta.

Skripta ispod će prikazati pet poruka sa nazivima boja:

Var cvijeće = ["Ruža", "Ljiljan", "Lala", "Jasmin", "Orhideja"]; za (var i = 0; i< flowers.length; i++){ alert(flowers[i] + " - это цветок."); }

Ako se vrijednost svojstva dužine ne promijeni tokom petlje, možete je pohraniti u lokalnu varijablu, a zatim tu varijablu koristiti u uvjetnom izrazu. Na ovaj način možete povećati brzinu petlje, jer će vrijednost svojstva dužine biti dohvaćena samo jednom tokom cijelog trajanja petlje.

Var cvijeće = ["Ruža", "Ljiljan", "Lala", "Jasmin", "Orhideja"], len = cvijeće.dužina; za (var i = 0; i

2. Petlja za...in

For...in petlje se koriste za kretanje kroz svojstva objekata koji nisu nizovi. Ova obilaznica se također naziva transfer. Prilikom prelaska, preporučuje se korištenje metode hasOwnProperty() za filtriranje svojstava koja su naslijeđena od prototipa.

Na primjer, napravimo objekt koristeći literal objekta.

Var user = ( ime: "Alice", starost: 25, zemlja: "Rusija" ); for (var prop u korisniku) ( console.log(prop + ": " + korisnik); )
Rice. 2. Rezultat izvršavanja for...in petlje na konzoli

Pretpostavimo da je u scenariju prije ili nakon kreiranja korisničkog objekta, prototip objekta Object proširen dodatnom metodom clone().

If (typeof Object.prototype.clone === "undefined") (Object.prototype.clone = function () (); )

Budući da interpreter stalno provjerava lanac nasljeđivanja prototipa, svi objekti automatski dobijaju pristup novoj metodi.


Rice. 3. Rezultat ponavljanja for...in petlje na konzoli

Da bi se izbjegla detekcija ove metode dok se nabrajaju svojstva korisničkog objekta, koristi se metoda hasOwnProperty() koja će filtrirati svojstva prototipa.

Var user = ( ime: "Alice", starost: 25, zemlja: "Rusija" ); if (typeof Object.prototype.clone === "undefined") ( Object.prototype.clone = funkcija () (); ) for (var prop u korisniku) ( if (user.hasOwnProperty(prop)) ( console.log (prop + ": " + korisnik); ) )
Rice. 4. Rezultat popisivanja svojstava objekta korištenjem metode hasOwnProperty().

3. while petlja

Dok petlja je petlja s preliminarnom provjerom uvjetnog izraza. Naredba unutar petlje (blok koda u vitičastim zagradama) će se izvršiti ako uvjetni izraz procijeni na true . Ako prva provjera vrati false , blok instrukcija neće biti izvršen ni jednom.

Nakon što se iteracija petlje završi, uvjetni izraz se ponovo testira na istinitost i proces se ponavlja sve dok izraz ne dobije vrijednost false. U tom slučaju, program će nastaviti iz prvog reda odmah nakon petlje (ako postoji).

Ova petlja će prikazati tablicu množenja za broj 3:

Var i = 1; var msg = ""; dok (i< 10) { msg+= i + " x 3 = " + (i * 3) + "
"; i++; ) document.write(msg);
Rice. 5. Rezultat izvršavanja while petlje

4. Do...while petlja

Petlja do...while; provjerava uslov nastavka nakon što se petlja izvrši. Za razliku od while petlje, u do...while; Tijelo petlje se izvršava najmanje jednom, jer se uvjet provjerava na kraju petlje, a ne na početku. Ova petlja se koristi rjeđe nego while , jer je u praksi rijetka situacija u kojoj je potrebno najmanje jedno izvršenje petlje.

Var rezultat = ""; var i = 0; do ( i += 1; rezultat += i + " "; ) dok (i< 5); document.write(result);
Rice. 6. Rezultat izvršavanja do...while petlje

U sljedećem primjeru, izrazi unutar petlje se izvršavaju jednom, čak i ako uvjet nije istinit.

Var i = 10; do ( document.write(i + " "); i++; ) dok (i< 10);

5. Beskonačne petlje

Kada kreirate bilo koju petlju, možete stvoriti beskonačnu petlju koja se nikada neće završiti. Takva petlja bi potencijalno mogla nastaviti da radi sve dok je pokrenut računar korisnika. Većina modernih pretraživača to može otkriti i zatražiti od korisnika da prestane s pokretanjem skripte. Da biste izbjegli stvaranje beskonačne petlje, morate biti sigurni da će dati uvjet u nekom trenutku vratiti netačno. Na primjer, sljedeća petlja specificira uvjet koji nikada ne vraća false jer ja nikada neće biti manji od 10:

Za (var i = 25; i > 10; i++) ( document.write("Ova rečenica će trajati zauvijek...
"); }

6. Ugniježđene petlje

Poziva se petlja unutar druge petlje ugniježđen. Sa svakom iteracijom petlje, ugniježđena petlja se izvršava u potpunosti. Ugniježđene petlje mogu se kreirati korištenjem for petlje i while petlje.

Za (broj var = 1; broj< 3; count++) { document.write(count + ". Строка цикла
"); for (var nestcount = 1; nestcount< 3; nestcount++) { document.write("Строка вложенного цикла
"); } }
Rice. 7. Rezultat izvršavanja ugniježđene for petlje

7. Upravljanje ciklusom

Petlja se može kontrolirati korištenjem naredbi break; i nastavi; .

7.1. Pauza operatera;

Pauza operatera; završava izvršavanje trenutne petlje. Koristi se u izuzetnim slučajevima kada se petlja ne može izvršiti iz nekog razloga, kao što je ako aplikacija naiđe na grešku. Najčešće operator break; je dio if konstrukcije.

Kada se izjava prekine; koristi se bez oznake, omogućava vam da izađete iz naredbe petlje ili prekidača. Sljedeći primjer kreira brojač čije bi vrijednosti trebale biti u rasponu od 1 do 99, ali naredba break prekida petlju nakon 14 iteracija.

Za (var i = 1; i< 100; i++) { if (i == 15) { break; } document.write(i); document.write("
"); }
Rice. 8. Rezultat operatora break u for petlji

Za ugniježđene petlje, naredba break; koristi se s oznakom koja završava imenovanu instrukciju. Oznaka vam omogućava da izađete iz bilo kojeg bloka koda. Imenovani iskaz može biti bilo koji izraz izvan naredbe break; . Oznaka može biti ime if naredbe ili ime bloka naredbi zatvorenih u vitičaste zagrade samo da bi se dodijelila oznaka tom bloku. Između ključne riječi break; i naziv oznake ne dozvoljava novi red.

Vanjska petlja: for(var i = 0; i< 10; i++) { innerloop: for(var j = 0; j < 10; j++) { if (j >3) prekid; // Izlaz iz unutrašnje petlje if (i == 2) break innerloop; // Ista stvar ako (i == 4) break outerloop; // Izlaz iz vanjske petlje document.write("i = " + i + " j = " + j + "
"); ) ) document.write("FINAL i = " + i + " j = " + j + "
");

7.2. Operater nastavi;

Operater nastavi; zaustavlja trenutnu iteraciju petlje i započinje novu iteraciju. U ovom slučaju, while petlja se vraća direktno u svoj uslov, a petlja for prvo procjenjuje izraz povećanja, a zatim se vraća na uvjet.

Ovaj primjer će prikazati sve parne brojeve:

Var i; za(i = 1; i<= 10; i++) { if (i % 2 !== 0) { continue; } document.write("
čak broj= " + i); )
Rice. 9. Rezultat operatora continue u for petlji

Operater nastavi; također se može koristiti u ugniježđenim petljama s oznakom.

Vanjska petlja: for (var i = 0; i "); for (var j = 0; j "); ) ) document.write("Sve petlje završene"+"
");
Rice. 10. Rezultat operatora nastavljanja s oznakom

Istorija formiranja sintakse modernog programskog jezika slična je razumevanju procesa formiranja Univerzuma. Šta i kako je bilo na početku... Ali sada je sve jednostavno i dostupno.

Na kraju krajeva, algoritam je uvijek sekvencijalni lanac naredbi. Paralelizam u programiranju je skup nekako kombinovanih sekvenci. sekvencijalni ili paralelni lanac komandovanja nikada nije bio praktičniji. Oznake, prijelazi i uvjeti - sve je bilo dovoljno za bilo koje rješenje. Funkcionalni jezici su ove ideje učinili irelevantnim, ali potreba za ponavljanjem dijelova koda ostaje.

Pretraživač: DOM, njegov jezik + server

U JavaScriptu petlje ostaju, iako su funkcionalne ideje dobile posebno značenje. Možda je nešto ostalo od "Lisp-a" i "Prologa", ali je najverovatnije oblast u kojoj živi JavaScript dovela do onoga što postoji, ali je sumnjivo da je ovo poslednje rešenje.

JavaScript se pokreće unutar pretraživača, koji prima stranicu, analizira je u DOM i pokreće prvu skriptu. Sve ostale stranice, uključujući i one učitane na ovoj, djelo su programera koji manipulira jezikom, preko kojeg se može pozvati kod na serveru i dobiti rezultat pomoću AJAX mehanizma.

Pretraživač izvršava JavaScript kod, koji može koristiti objekte pretraživača, uključujući i onaj koji prenosi informacije na server i prima odgovor, a to može biti HTML oznaka, stilovi i sam kod. Odgovor može biti predstavljen nizovima i objektima. Izgubljena je svrha korištenja petlji u JavaScriptu, postoji mnogo mogućnosti da se radi bez njih, a rizik od obješenja pretraživača s beskonačnim nizom naredbi nije najbolje rješenje.

Same petlje su prisutne u većini JavaScript sintaktičkih konstrukcija; programer može dopuniti standardne konstrukcije svojim vlastitim funkcijama.

Pozicija JavaScripta u prostoru koda

Savremeni programer ni ne pomišlja da dok, uradi dok,...) koristi na kraju niz procesorskih ciklusa, jednostavan niz binarnih operacija, prekinut provjerama brojača, odnosno uslovima.

Ne postoji petlja kao takva na nivou mašinskog jezika: postoji kombinacija običnih komandi, uslovnih operacija i prelaza. Jedan nivo više, bez obzira koji alat se koristi za razvoj pretraživača i JavaScript interpretera, sigurno će biti petlji. Štaviše, „delovi koda“ će biti predstavljeni u različito vreme i od strane različitih generacija programera. Na spratu iznad je JavaScript "zgrada". Sintaksa koja nudi moderne JavaScript petlje.

JS je divan jezik: praktičan, moderan i potpuno opremljen. Sintaksa ovog alata uključuje sve konstrukcije koje su izdržale test vremena i postale nepokolebljivi temelj svakog algoritma. Ali da li su ciklusi zaista neophodni? Napredak u programiranju često je postavljao sebi pitanja fundamentalne prirode, ali je samo u nekim slučajevima pronalazio rješenje.

Objektivni razlozi

Ciklus može imati samo dvije opcije: po uslovu ili po brojaču, ali u suštini (na najnižem nivou) svaki ciklus je samo po uslovu. U nekim jezicima postoji ciklus "za svakog". U JavaScriptu, foreach petlje su predstavljene prop u konstrukciji objekta, ali možete koristiti varijantu array.forEach(...).

U svakom slučaju, postoje dvije opcije: programer koji na kraju izvršava sve algoritme programera, čak i one koji pišu na interpretativnim jezicima, nema druge opcije za ponavljanje lanca naredbi: on može ponovo izvršiti nešto dok:

  • brojač se računa;
  • sve dok je uslov ispunjen.

JavaScript je tipičan tumač. Njegova posebnost: radi unutar pretraživača, koristi njegove objekte i omogućava vam da izvršavate algoritame na strani klijenta, kako kada se stranica učitava u pretraživač, tako i tokom njegovog rada.

Jednostavna petlja jedan po jedan

U JavaScriptu, foreach petlje izgledaju kao primjena funkcije na niz:

Upotreba ovakvih ciklusa ne predstavlja poteškoće. Formalno, ciklus kao takav ne postoji. Postoji sekvencijalni poziv funkcije za elemente niza.

Petlja na pultu

For petlje izgledaju poznatije u JavaScriptu:

Ovdje je brojač varijabla čija se vrijednost mijenja prema formuli, a uvjet je znak kraja ciklusa. Formula i uvjet ne moraju uključivati ​​varijablu petlje. Ali kontrola nad trenutkom završetka ciklusa u potpunosti je određena njihovim sadržajem.

Uslovne petlje

JavaScript nudi opciju sa while u zavisnosti od toga kada uslov treba da se proveri. Ako se tijelo petlje ne može izvršiti ni jednom, ovo je jedno; ako tijelo mora biti izvršeno barem jednom, ovo je drugo:

U prvom slučaju, prilikom tumačenja konstrukcije while, JavaScript prvo provjerava uvjet, a ako je istinit, izvršava petlju. U drugom slučaju, petlja će se prvo izvršiti. Ako, kao rezultat promjene varijabli navedenih u uvjetima dizajna do while, procijenit će se na false i petlja će prestati da se izvršava.

Ogromne kombinacije jednostavnih algoritama

Glavni zadatak (komponentni dio) bilo kojeg algoritma je pronaći, a tek onda donijeti odluku šta dalje. Najprimitivnija opcija pretraživanja je pristup varijabli, rezultat se dobija direktno. Ako ima mnogo varijabli, ili ima mnogo vrijednosti (niz), tada je za odabir vrijednosti potrebno pronaći nešto što će odrediti dalje ponašanje skripte.

Tako jednostavna doktrina napravljena petlja sa brojačem u JavaScript-u je neka vrsta lijeka za sve probleme. Moderni računari su brzi. Ima dovoljno vremena za pokretanje skripti u pretraživaču, nema potrebe za žurbom. Lakše je nego ikada proći kroz nešto zarad nečega. Kao rezultat toga, na J AvaScript za petlje je postao veoma popularan.

Čini se da u ovome nema ništa loše. Ali iza ovog pristupa lako se gubi suština za koju je napisan ovaj ili onaj algoritam. Podaci nisu besmisleni. Sve za šta je napisan bilo koji program ima značenje. Prekomjerna upotreba na J avaScript za petlje, programer možda neće prepoznati traženi entitet i neće kreirati adekvatan algoritam.

Funkcionalnost, još jedan odraz stvarnosti

Primjena JavaScript petlje, primjerikod istog tipa može se predstaviti funkcijama - algoritam će se odmah transformirati, glavni dio skripte će se smanjiti u veličini, sve će postati čitljivo i razumljivo.

Ovo nije radikalno novo rješenje, ali u suštini ne nadilazi druge jezičke konstrukcije. Konkretno, J AvaScript petlje se mogu naći u klasičnoj funkciji split():

var cResult = "9,8,7,6,5,4" ;
var aResult = cResult .split ( "," );

Ovdje nema petlje, ali kako se to drugačije može učiniti osim traženjem simbola "," i korištenjem za odvajanje jednog broja od drugog.

Apstrahirajući od načina na koji se ovo implementira unutar funkcije split(), možete dopuniti JavaScript svojom vlastitom funkcionalnošću koja koristi petlje, što je praktičnije sa stanovišta upotrebe. Važno je da ovaj pristup vodi razvoju funkcionalnosti za svaki zadatak, odnosno, ali generalno će i dalje biti uz ovaj pristup.

Ove funkcije allt(), padc(), padl() i padr() su nešto što JavaScript nema, ali ponekad morate ukloniti razmake iz niza ili poravnati dužinu niza s lijeve, desne ili obje strane. Tijela ovih funkcija sadrže JavaScript petlje. Jednostavan, pristupačan i algoritam koji ovo koristi nikada se neće srušiti.

Varijante funkcija za pretvaranje brojeva iz heksadecimalnog u 10. brojevni sistem i obrnuto, jednostavnije rečeno, iz jednog formata podataka u drugi, ovdje se izvode pomoću do while petlje. Veoma kompaktna i efikasna jezička sintaksa.

Ispravni ciklusi - odraz stvarnosti

JavaScript ne odgovara drugim programskim jezicima i ne razlikuje se po raznolikosti verzija, a što je najvažnije, nastoji ne mijenjati sintaksu, već je razvijati i proširivati.

Način razmišljanja programera koji koristi JS je drugačiji iz razmišljanja PHP programera (posebno i drugih jezika općenito, osim što “Prolog” i njegovi sljedbenici nisu uključeni u opći mainstream), kada algoritam nije ograničen na varijable, nizove, operatore dodjeljivanja i cikličke konstrukcije.

Ako zamislimo da nema ciklusa, ali problem treba riješiti, onda je najjednostavnija opcija (slepi povez) pretpostaviti da program obrađuje podatke koji su tačka ili sistem tačaka u informacionom prostoru. Šta je bod, a šta sistem bodova je stvar određene predmetne oblasti. Za programera ova teza znači: postoji jednostavna datost i postoji zbirka jednostavnih podataka. Naravno, jednostavan podatak jednog nivoa biće sistem za nivo ispod, a tačka za nivo iznad.

Sa ovim pristupom, cilj je da manifestuje svoju suštinu kroz svoje metode. Kada je tačka u supersistemu, onda je funkcija sistema da manifestuje svoju suštinu kao skup suština tačaka uključenih u njega.

Ovaj pristup je star koliko i ideja programskih jezika, ali se još nije adekvatno odrazio u programiranju. Mnogi programeri razmišljaju ispravno, ali rezultat njihove kreativnosti ostavlja mnogo da se poželi.

Pomaže ponekad nositi povez na očima da vidite svijet!

Ciklusi

Da bismo razumeli efekat uslovnih naredbi, predložili smo da ih zamislimo kao račve na putu kojim se kreće JavaScript interpreter. Petlje se mogu zamisliti kao polukružno skretanje na putu koje vas vraća nazad, prisiljavajući tumača da prolazi kroz isti dio koda iznova i iznova.

JavaScript ima četiri petlje: while, do/while, for i for/in. Svakom od njih je posvećen jedan od sljedećih pododjeljaka. Jedna uobičajena upotreba petlji je prelazak elemenata niza.

while petlja

Naredba if je osnovni uslovni izraz u JavaScript-u, a osnovna petlja za JavaScript je petlja while. Ima sljedeću sintaksu:

dok (izraz) (instrukcija)

Dok petlja počinje procjenom izraza. Ako je ovaj izraz netačan, tumač preskače naredbu koja čini tijelo petlje i prelazi na sljedeći izraz u programu. Ako je izraz tačan, tada se izvršava naredba koja čini tijelo petlje, tada se kontrola prenosi na početak petlje i izraz se ponovo evaluira. Drugim riječima, tumač izvršava instrukciju tijela petlje iznova i iznova sve dok vrijednost izraza ostaje tačna. Imajte na umu da je moguće kreirati beskonačnu petlju koristeći while(true) sintaksu.

Obično ne želite da JavaScript interpreter izvodi istu operaciju iznova i iznova. U skoro svakoj petlji, sa svakom iteracijom petlje, jedna ili više varijabli mijenjaju svoje vrijednosti. Budući da se varijabla mijenja, ono što instrukcija radi može se razlikovati svaki put kada prođe kroz tijelo petlje.

Dodatno, ako su varijable(e) koje se modificiraju prisutne u izrazu, vrijednost izraza se može promijeniti sa svakim prolazom petlje. Ovo je važno jer inače se izraz čija je vrijednost istinita nikada neće promijeniti i petlja se nikada neće završiti! Ispod je primjer while petlje koja ispisuje brojeve od 0 do 9:

Var count = 0; dok (broj

Kao što vidite, varijabla count je postavljena na 0 na početku, a zatim se njena vrijednost povećava svaki put kada se izvrši tijelo petlje. Nakon što se petlja izvrši 10 puta, izraz će vratiti false (to jest, varijabla count nije više manja od 10), naredba while će se završiti, a tumač će preći na sljedeći izraz u programu. Većina petlji ima varijable brojača slične count. Najčešće, varijable pod nazivom i, j i k djeluju kao brojači petlje, iako bi, kako biste programski kod učinili razumljivijim, brojačima dajte opisnija imena.

do/while petlja

Do/while petlja je na mnogo načina slična petlji while, osim što se izraz petlje testira na kraju, a ne na početku. To znači da se tijelo petlje uvijek izvršava barem jednom. Ova instrukcija ima sljedeću sintaksu:

do (izjava) while (izraz);

Do/while petlja se koristi rjeđe od svoje sestrinske while petlje. Činjenica je da je u praksi situacija kada ste unaprijed sigurni da ćete morati barem jednom izvršiti tijelo petlje pomalo neobična. Ispod je primjer korištenja do/while petlje:

Funkcija printArray(a) ( var len = a.length, i = 0; if (len == 0) console.log("Empty array"); else ( do ( console.log(a[i]); ) dok (++i

Postoje dvije razlike između do/while petlje i obične while petlje. Prvo, do petlja zahtijeva i ključnu riječ do (da označi početak petlje) i ključnu riječ while (da označi kraj petlje i odredi uvjet). Drugo, za razliku od while petlje, do petlja se završava tačkom i zarezom. Dok petlja ne mora završavati točkom i zarezom ako je tijelo petlje zatvoreno u vitičaste zagrade.

za petlju

Petlja for je konstrukcija petlje koja je često prikladnija od while petlje. Petlja for olakšava konstruisanje petlji koje prate obrazac uobičajen za većinu petlji. Većina petlji ima neku vrstu varijable brojača. Ova varijabla se inicijalizira prije pokretanja petlje i provjerava se prije svake iteracije. Konačno, varijabla brojača se povećava ili na drugi način modificira na kraju tijela petlje, neposredno prije nego što se varijabla ponovo provjeri. Inicijalizacija, verifikacija i ažuriranje su tri ključne operacije koje se izvode na varijabli petlje. Naredba for čini ova tri koraka eksplicitnim dijelom sintakse petlje:

za (inicijalizacija; provjera; povećanje) (instrukcija)

Inicijalizacija, provjera i povećanje su tri izraza (odvojena tačkom i zarezom) koja su odgovorna za inicijalizaciju, provjeru i povećanje varijable petlje. Ako ih postavite u prvi red petlje, lakše ćete razumjeti šta for petlja radi i sprječava vas da zaboravite da inicijalizirate ili povećate varijablu petlje.

Najlakši način da se objasni for petlja je da se prikaže ekvivalent while petlje:

inicijalizacija; dok (provjera) ( instrukcija; povećanje; )

Drugim riječima, inicijalizacijski izraz se evaluira jednom prije početka petlje. Ovaj izraz je obično izraz sa nuspojavama (obično zadatak). JavaScript takođe dozvoljava da izraz za inicijalizaciju bude izjava deklaracije varijable, tako da je moguće istovremeno deklarisati i inicijalizovati brojač petlje.

Testni izraz se procjenjuje prije svake iteracije i određuje da li će tijelo petlje biti izvršeno. Ako je rezultat testa tačan, izvršava se instrukcija koja je tijelo petlje. Na kraju petlje, procjenjuje se izraz inkrementa. Da bi ovaj izraz imao značenje, mora biti izraz sa nuspojavama. Obično je ovo ili izraz dodjeljivanja ili izraz koji koristi ++ ili -- operator.

Također možete ispisati brojeve od 0 do 9 koristeći for petlju, kao što je prikazano ispod, za razliku od ekvivalentne while petlje prikazane u prethodnom primjeru:

Za (broj var = 0; broj

Naravno, petlje mogu biti mnogo složenije od ovih jednostavnih primjera, a ponekad se više varijabli mijenja u svakoj iteraciji petlje. Ova situacija je jedini put u JavaScriptu u kojem se često koristi operator zarez - omogućava vam da kombinujete višestruke inicijalizacijske i inkrementirajuće izraze u jedan izraz pogodan za upotrebu u for petlji:

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

for/in petlja

For/in petlja koristi ključnu riječ for, ali je potpuno drugačija od obične for petlje. For/in petlja ima sljedeću sintaksu:

for (varijabla u objektu) (izjava)

Varijabla ovdje je obično ime varijable, ali možete koristiti i naredbu var, koja deklarira jednu varijablu. Parametar objekta je izraz koji vraća objekt. I kao i obično, instrukcija je instrukcija ili blok instrukcija koji formira tijelo petlje.

Za kretanje kroz elemente niza, prirodno je koristiti običnu for petlju:

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

Naredba for/in vam takođe prirodno omogućava da prelazite kroz svojstva objekta:

// Kreiraj novi objekat var obj = (name:"Alex", lozinka:"12345" ); for (var i u obj) ( // Ispis vrijednosti svakog svojstva objekta console.log(obj[i]); )

Da bi izvršio for/in izraz, JavaScript interpreter prvo procjenjuje objekt izraza. Ako vrati null ili undefined, tumač preskače petlju i prelazi na sljedeću naredbu. Ako izraz vraća jednostavnu vrijednost, konvertuje se u ekvivalentni objekat omotača. U suprotnom, izraz vraća objekat. Interpretator tada izvršava jednu iteraciju petlje za svako svojstvo objekta koji se može nabrojati. Prije svake iteracije, interpreter procjenjuje vrijednost izraza, pohranjuje je u varijablu i dodjeljuje joj ime svojstva (vrijednost niza).

mob_info