“Automatiseren
draait om herhalen, herhalen en herhalen.”
- Sam Rain
- Sam Rain
Lussen, oftewel ‘looping’ in Tovenaarstaal,
zijn vaak beangstigend voor Hobbits. Inderdaad, een foutje is zo gemaakt – en
oneindige lussen zijn niet bepaald een blijk van kunde. Toch zijn lussen ook
voor mensen en hobbits geen tovenaarskolder.
Een lus is doodweg herhalen van programmacode.
Dat is het geheim. Om te voorkomen dat dit niet ongecontroleerd gebeurd, hebben
lussen in JavaScript een Booleaanse conditie –dit heeft niets met mensensport
te maken of de sprintsnelheid van menig Hobbit. Een conditie is een
toverformule die zich op Dwergse wijze afspeelt; het resultaat is óf waar (de
toverformule klopt) óf onwaar (de toverformule klopt niet). In JavaScript heet
‘waar’ gewoon true en ‘onwaar’ false.
De gemakkelijkste lus is de ‘while’ lus:
var x = true ;
while (x) {
/* oneindige lus */
}
while (x) {
/* oneindige lus */
}
Hoewel dit niet meteen het meest ideale
voorbeeld is, beschrijft het wél meteen de simpliciteit ervan. Wat je als
Hobbit dient te begrijpen is dat formule tussen de haken voor JavaScript zal
moeten uiten in een ‘true’ waarde. Als x ‘onwaar’ was geweest, had de code
tussen de accolades (de { en } haakjes) nooit het daglicht gezien. Er komt voor
efficiënte ‘while’ lussen toch wat Elvenmagie kijken; wees geduldig zo lang we
nog op het droge oefenen!
De ietwat gecontroleerde lus is diegene met
het toverwoord ‘for’; de ‘for’-lus herhaald zich een vast aantal keren, totdat
deze eindigt.
for (var x = 1 ; x<5 ; x++)
{
/* herhaalt zich 5 keer */
}
{
/* herhaalt zich 5 keer */
}
De spreuk vraagt 3 ingrediënten, namelijk de
startwaarde (x = 1), de eindwaarde (x < 5) en de stapsgrootte (x ++). Zoals
je ziet is de lus al enigszins complexer, maar het nu enkel om het begrijpen waar
de ingrediënten worden toegevoegd. Merk op dat ‘var’ maar 1 keer voorkomt!
Wanneer we met echte Elvenmagie aan de slag
gaan zal het een stuk natuurlijker aanvoelen! De ‘for’ lussen worden vooral
gebruikt in het dooslopen van ‘lijsten’ (arrays).
De ‘for...in’ lus is speciaal voor het
doorlopen van ‘objecten’ waarvan de eigenschappen zijn gekenmerkt met een
tekenreeks (associatieve arrays). Omdat objecten baak niet altijd even handig
zijn met nummering, biedt de for...in lus uitkomst:
function MijnObject ( ) [
this.eigenschapA = “hallo” ;
this.eigenschapB = “hobbit” ;
this.eigenschapC = 5 ;
}
var x = new MijnObject ( ) ; */ LaatOpSchermZien () is */
for bla in x { */ een nep-functie, maar de */
LaatOpSchermZien (bla) ; */ bedoeling is vast duidelijk! */
}
this.eigenschapA = “hallo” ;
this.eigenschapB = “hobbit” ;
this.eigenschapC = 5 ;
}
var x = new MijnObject ( ) ; */ LaatOpSchermZien () is */
for bla in x { */ een nep-functie, maar de */
LaatOpSchermZien (bla) ; */ bedoeling is vast duidelijk! */
}
Uiteraard laten deze lussen nog niet veel
Elvenmagie zien, maar vormen deze drie lussen de basis van het herhalen:
1)
het herhalen totdat er een
‘onwaar’ resultaat wordt bereikt;
2)
het herhalen totdat er een
doelstelling wordt behaald;
3)
het herhalen totdat ieder item in
een object behandeld is.
JavaScript kent op deze lussen weer
aanvullende varianten, zoals de “do..while” lus –die minimaal de code in de lus
één keer uitvoert. De “for..each” lus is een verkorte versie van de ‘for’ lus
die zich richt op numerieke arrays. De With-lus verkort de schrijfstijl voor
het werken met objecten.
Echter, onder de motorkap zijn het allemaal
varianten van de ‘while’ lus. We naderen steeds meer Rivendel...
Meer lezen over Programmeren? Klik hier voor de inhoudsopgave voor alle
artikelen!
©SamRain
JavaScript - Deel 9
JavaScript - Deel 9
Geen opmerkingen:
Een reactie posten