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.
- 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.
- 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.
- 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.
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.