Cikkelemek megjelenítése egy bizonyos idő elteltével javascript. Hurok a JavaScriptben. Folytassa és szakítsa meg az állításokat

A ciklus egy vezérlő utasítás, amely lehetővé teszi a programkód végrehajtásának bizonyos számú megismétlését. Az utasítások minden egyes végrehajtását a ciklus törzsében iterációnak nevezzük.

míg hurok

A ciklus közbeni szintaxis:

A zárójelben lévő kifejezést ún teljesítésének feltétele ciklus vagy rövid ideig tartó állapot. Először a kifejezés értékét számítjuk ki. A kapott értéket szükség esetén implicit módon Boole-típusúvá alakítjuk. Ha a kifejezés kiértékelésének eredménye igaz , akkor a ciklus törzsében található utasítás végrehajtásra kerül, majd a vezérlés átkerül a ciklus elejére és a feltétel újra kiértékelésre kerül. Ha a kifejezés kiértékelésének eredménye false , akkor az értelmező befejezi a ciklust, és végrehajtja a ciklust követő utasítást. Így az értelmező újra és újra végrehajtja a ciklus törzsében található kódot, amíg a feltétel igaz:

A hurkok többször is végrehajthatnak egy kódblokkot. A hurkok akkor hasznosak, ha ugyanazt a kódot szeretné újra és újra futtatni, minden alkalommal más értékkel. Ez gyakran előfordul tömbökkel végzett munka során. Az 1. utasítás végrehajtásra kerül a ciklus megkezdése előtt. A 2. utasítás határozza meg a hurok indításának feltételét.

Ciklus megszakítása és újraindítása

A 3. utasítás a ciklus minden végrehajtásakor végrehajtódik. A fenti példából kiolvasható. Az 1. utasítás beállít egy változót a ciklus kezdete előtt. A 3. utasítás minden alkalommal növeli az értéket, amikor egy kódblokk végrehajtásra kerül a ciklusban. Általában az 1. utasítást használjuk a ciklusban használt változó inicializálására.

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

do-while hurok

Do-while ciklus szintaxisa:


A do-while ciklus hasonló a míg hurok, kivéve, hogy a ciklus végrehajtási feltétele az első iteráció után kerül ellenőrzésre, nem pedig előtte, és a ciklus pontosvesszővel végződik. Mivel a feltételt az iteráció után ellenőrizzük, a do-while ciklus törzsében lévő kód mindig legalább egyszer végrehajtásra kerül:

Az 1. utasításban több értéket is kezdeményezhet. Az 1. utasítást pedig kihagyhatja. Gyakran a 2. utasítást használják a kezdeti változó állapotának értékelésére. Ha kihagyja a 2. utasítást, meg kell adnia a cikluson belüli törést. Ellenkező esetben a kör soha nem ér véget. A szünetekről a lecke egy későbbi fejezetében olvashat.

Címkék használata az áramlás szabályozására

A 3. operátor gyakran növeli a kezdeti változó értékét. A 3. állítás bármire képes, például negatív, pozitív növekmény vagy bármi más. Előfordulhat olyan helyzet, amikor ki kell lépnie a hurokból, mielőtt elérné az alját. Előfordulhat olyan helyzet is, amikor ki akarja hagyni a kódblokk egy részét, és elindítja a ciklus következő iterációját. Ezeket az utasításokat arra használjuk, hogy azonnal kilépjünk bármelyik ciklusból, vagy elindítsuk a ciklus következő iterációját. A címke egyszerűen egy azonosító, amelyet kettőspont követ egy utasításra vagy kódblokkra.

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

Ez a ciklus akkor lehet hasznos, ha a ciklustörzsben lévő kódot legalább egyszer végre kell hajtani, függetlenül a végrehajtási feltételektől.

hurokhoz

A ciklus szintaxisához:


IN hurokhoz három kifejezés van pontosvesszővel elválasztva. Ennek a három kifejezésnek a végrehajtási sorrendje a következő:

A funkcionalitás, a valóság egy újabb tükre

Két különböző példát fogunk látni, hogy megértsük a törésjelek használatát és a folytatást. Jegyzet. Ezenkívül nem lehet semmilyen más utasítás a címke neve és a kapcsolódó ciklus között. Próbálja ki a következő két példát a parancsikonok jobb megértéséhez.

Hogyan működik a for ciklus

A for ciklus a ciklus legkompaktabb formája. A következő három fontos részt tartalmazza -. Ha a feltétel igaz, akkor a cikluson belül megadott kód végrehajtásra kerül, különben a vezérlő kilép a ciklusból.

  • A ciklus inicializálása, ahol a számlálónkat inicializáljuk egy kezdeti értékkel.
  • Az inicializálási utasítás a ciklus megkezdése előtt végrehajtásra kerül.
  • Teszt teszt, amely ellenőrzi, hogy ezt az állapotot igaz vagy sem.
  • Egy iterációs utasítás, amelyben növelheti vagy csökkentheti a számlálót.
Mindhárom részt egy sorba helyezheti, pontosvesszővel elválasztva.

  1. Az első kifejezés mindig csak egyszer kerül kiértékelésre – az első iteráció előtt. Ezért általában az első kifejezés egy olyan változó definíciója, amelyet a hurokvégrehajtási feltételben számlálóként használunk.
  2. A második kifejezés a ciklus végrehajtásának feltételét határozza meg. Minden iteráció előtt kiszámításra kerül, és meghatározza, hogy a ciklus törzse végrehajtásra kerül-e. Ha a kifejezés kiértékelése igaz, akkor a ciklustörzsben lévő kód végrehajtásra kerül. Ha false értéket ad vissza, a ciklus véget ér, és a vezérlés a ciklus után következő utasításra lép. Ha a feltétel első ellenőrzésekor hamisnak bizonyul, a ciklus törzsében lévő kód egyszer sem kerül végrehajtásra.
  3. Minden iteráció után kiértékeli a harmadik kifejezést. Általában egy változó értékének megváltoztatására használják, amelyet a hurok állapotának tesztelésére használnak.

Példa a ciklusra:

Bevált gyakorlatokat kínál e megközelítések alkalmazásához. A ciklus előtt a címke lehetővé teszi a ciklus megszakítását vagy folytatását, még a benne lévő beágyazott ciklusból is. A tulajdonságok az iteráció során eltávolíthatók. Iterálás objektumtulajdonság-párok felett: Iteráció kulcsok felett, használja az egyes kulcsokat a megfelelő érték megszerzéséhez.

  • Egy blokk előtt kiléphet abból.
  • A tömbök iterációjának hagyományos módja.
  • Tulajdonságkulcsok felett iterál, beleértve az örökölt kulcsokat is.
  • Ne használja tömbökhöz.
  • Tömbindexeken és tulajdonságkulcsokon keresztül ismétlődik.
  • Tehát problémák lesznek, amint valaki hozzáad egy tulajdonságot a tömbhöz.
Azt mondtuk, hogy az olyan vezérlőstruktúrák, mint a hurkok, bonyolultságot teremtenek.

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

Amint a példából is látható, a for ciklus a többi ciklustól eltérően lehetővé teszi, hogy a ciklushoz tartozó kódot egy helyen csoportosítsuk.

A for ciklus bármely kifejezése hiányozhat, de maguknak a pontosvesszőknek jelen kell lenniük, különben szintaktikai hiba lép fel. Ha a második kifejezés hiányzik, a ciklus örökké futni fog.

Hurok előfeltétellel

De eddig nem láttunk bizonyítékot arra, hogy ez hogyan történik. De először egy kis beállítás. Létrehozunk egy mintafüggvényt és tömböt a munkához. Tehát van egy tömbünk, és szeretnénk minden bejegyzést megismételni. Jegyezzük meg, hogy egy számlálót használunk annak nyomon követésére, hogy hol vagyunk, pl. ezt a számlálót nullára kell inicializálnunk, és minden alkalommal növelnünk kell a ciklus körül.

Ez egy hasznos kialakítás, mert a számlálómintában mindent összerak a tetején. De lépjünk vissza egy kicsit, és nézzük meg, mit próbál elérni ez a kód. Nem nagyon aggódunk a mérő miatt. Ez a minta, hogy egy tömb minden elemével csinálunk valamit, meglehetősen gyakori. A ciklus körül minden alkalommal csak a tömb következő elemét adja meg.

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

Egy kifejezés helyett több kifejezést is megadhat, ezeket vesszővel elválasztva.

// nem kerül végrehajtásra, mert a feltételellenőrzés utolsó kifejezése hamis (i = 1; i< 4, false; i++) ... for (var i = 1, j = 5; i <= 5; i++, j--) document.write(i + " " + j +"
"); Próbálja ki »

Figyelje meg, hogy a számláló és az összehasonlítás mind eltűnt. Még csak ki sem kell emelnünk az elemet a tömbből. Kiküszöbölnénk az összetett komplexitást. A kódunkat még tömörebbé és kifejezőbbé tehetjük, de hogy lássuk, hogyan, bővítsük egy kicsit a problémát.

Mi lenne, ha két tömböt kellene meghatároznunk? Nyilvánvalóan ez mindenki számára egy ciklus lesz. A működő kód pedig jobb, mint a nem működő kód. Átszervezhetjük, hogy csökkentsük az ismétlődések egy részét. Ez kezd sokkal szebbnek tűnni, de mi lenne, ha lenne egy másik funkciónk, amelyet használni szeretnénk?

for-in hurok

A for-in ciklus egy objektum felsorolt ​​tulajdonságain való véletlenszerű sorrendben történő iterálására szolgál, és a következő szintaxissal rendelkezik:

For (változó az objektumban) utasítás;

Az in kulcsszótól balra egy változó neve található, amely karakterláncként van hozzárendelve az objektum egyik tulajdonságának nevéhez a ciklus minden iterációja előtt. Az in kulcsszótól jobbra van egy objektum, amelynek tulajdonságai a cikluson keresztül ismétlődnek. A ciklus mindaddig fut, amíg az összes elérhető tulajdonságot meg nem iterálják. Ha az objektumot reprezentáló változó nulla vagy definiálatlan, a ciklus még egyszer sem fog végrehajtani:

Mindenképpen tegyük meg, hogy egymás mellett lássuk őket. Ez a két funkció nagyon hasonló. Mi lenne, ha elvonatkoztatnánk a mintát itt? Szeretnénk: definiálni egy tömböt és egy függvényt, leképezni a tömb minden elemét egy új tömbbe. Ezt úgy teheti meg, hogy minden elemre egy függvényt alkalmaz. Ezt a kártyát hívjuk. A tömbök leképezési funkciója így néz ki.

Hurok előfeltétellel míg

Természetesen ez még mindig nem szabadul meg teljesen a ciklustól. Ha ezt meg akarjuk tenni, írhatunk egy rekurzív változatot. A rekurzív megoldás meglehetősen elegáns. Csak két sornyi kód és nagyon kevés behúzás. De általában nem használjuk a rekurzív verziót, mert gyenge teljesítményjellemzőkkel rendelkezik a régebbi böngészőkben. És valójában egyáltalán nem kell térképet írnunk. Ezzel a térképmódszerrel a kódunk most így néz ki. Persze lehet, hogy van benne hurok, de ez már nem a mi gondunk.

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

Ahhoz, hogy a ciklushoz tartozó kód egy helyen maradjon, deklarálhat egy változót egy for-in ciklusban. Ezért az in kulcsszó előtti kifejezés általában egy olyan változó deklarációja, amelyhez tulajdonságneveket rendelünk.

A hurkok egyszerű módja annak, hogy valamit többször is megcsináljon. A JavaScript útmutató ezen fejezete bemutatja a JavaScriptben elérhető különféle operátorokat.

Ez a kód most tömör és kifejező. Lehet, hogy ez hülye kérdésnek tűnik, de gondolj bele. Könnyű, mert rövid? Csak azért, mert a kód tömör, nem jelenti azt, hogy hiányzik belőle a bonyolultság. Ez egyszerű, mert ugyanaz a gondunk. Ezeknek a függvényeknek nem kell semmit tudniuk a tömbökről vagy ciklusokról. Van még egy függvényünk, a map, ami a tömbökkel foglalkozik. De nem mindegy, hogy milyen típusú adatok vannak a tömbben, vagy akár mit akarunk kezdeni az adatokkal. Egyszerűen végrehajtja az általunk átadott funkciót.

Ahelyett, hogy mindent összekevertünk volna, elválasztottuk a karakterlánc-feldolgozást a tömbfeldolgozástól. Ezért nevezhetjük ezt a kódot egyszerűnek. Most a térkép nagyon praktikus, de nem fedi le az összes hurkot, amire szükségünk lehet. Ez akkor hasznos, ha a bemenettel pontosan megegyező hosszúságú tömböt szeretne létrehozni. De mi van, ha egy számtömböt akarunk hozzáadni? Vagy megtalálja a legrövidebb karakterláncot a listában? Néha szeretnénk egy tömböt feldolgozni és egyetlen értékre redukálni.

A hurkot úgy képzelheti el, mint egy játék számítógépes változatát, ahol azt mondják valakinek, hogy X lépést tegyen az egyik irányba, majd Y lépjen a másikba; Például a "Sétálj 5 lépést keletre" játék ötlete hurokként fejezhető ki:

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

Sokféle hurok létezik, de lényegében mindegyik ugyanazt csinálja: néhány műveletet többször is megismétel (ne feledkezzünk meg a nulla ismétlési időről, a tömbben a számolás 0-tól kezdődik). A különböző felépítésű ciklusok különböző módokat kínálnak a ciklus kezdetének és végének meghatározására. A különféle programozási feladatoknak saját ciklusoperátorai vannak, amelyek segítségével sokkal könnyebben megoldhatók.

Tegyük fel, hogy van egy sor hős tárgyunk. Szeretnénk megtalálni a legerősebb hőst. Mindent összevetve ez a kód nem is olyan rossz. Megkerüljük a kört, az eddigi legerősebb hőst követve. A kép megtekintéséhez képzeljük el, hogy mi is meg akartuk találni az összes hős teljes erejét.

Mindkét példában van egy munkaváltozó, amelyet inicializálunk a ciklus futtatása előtt. Ezután minden alkalommal a ciklus körül feldolgozunk egy elemet a tömbből, és frissítjük a munkaváltozót. A hurokrajz még áttekinthetőbbé tétele érdekében a függvényekben figyelembe vesszük a hurkok belsejét. A változókat is átnevezzük, hogy kiemeljük a hasonlóságokat.

Operátorok, amelyeket arra terveztek, hogy ciklusokat szervezzenek JavaScriptben.