Inhoud

  1. Geen paragrafen H1 - Voorwoord
  2. Geeft paragrafen weer H2 - Wat is JavaScript?
    1. §1. Wat kun je met JavaScript?
    2. §2. De script-tag
    3. §3. Opdrachten
  3. Geeft paragrafen weer H3 - Statements (opdrachten)
    1. §1. Wat zijn statements?
    2. §2. Functie document.write
    3. §3. Commentaar
    4. §4. Functie alert
    5. §5. Opdrachten
  4. Geeft paragrafen weer H4 - Variabelen
    1. §1. Wat is een variabele?
    2. §2. Variabelen maken en gebruiken
    3. §3. Functie prompt
    4. §4. Operatoren
    5. §5. Strings
    6. §6. Opdrachten
  5. Geeft paragrafen weer H5 - Functies
    1. §1. Wat is een functie?
    2. §2. Functies maken en gebruiken
    3. §3. Functies die iets teruggeven
    4. §4. Parameters en argumenten
    5. §5. De scope van variabelen
    6. §6. Opdrachten
  6. Geeft paragrafen weer H6 - Loops en voorwaardes
    1. §1. Wat zijn loops en voorwaardes?
    2. §2. Het if-else statement
    3. §3. Vergelijkingen en hun operatoren
    4. §4. Functie confirm
    5. §5. Het switch-statement
    6. §6. De while-loop
    7. §7. De for-loop
    8. §8. Stoppen door break
    9. §9. Opdrachten
  7. Geeft paragrafen weer H7 - Events
    1. §1. Wat is een event?
    2. §2. Events maken en gebruiken
    3. §3. Welke events zijn er?
    4. §4. Variabele this
    5. §5. Variabele window.event
    6. §6. Opdrachten
  8. Geeft paragrafen weer H8 - Array
    1. §1. Wat is een Array?
    2. §2. Een Array maken en gebruiken
    3. §3. Een Array doorlopen
    4. §4. Een associatieve array
    5. §5. De for-in loop
    6. §6. Opdrachten
  9. Geeft paragrafen weer H9 - Objecten
    1. §1. Wat is een object?
    2. §2. Verschil object en variabele
    3. §3. Eigenschappen
    4. §4. Methodes
    5. §5. Eigenschappen en methodes
    6. §6. Opdrachten
  10. Geeft paragrafen weer H10 - Globale objecten
    1. §1. Wat zijn globale objecten?
    2. §2. Het window object
    3. §3. Het document object
    4. §4. Het Math object
    5. §5. Standaard HTML-Element object
    6. §6. Een HTML-Table object
    7. §7. Opdrachten

Hoofdstuk 6 - Opdracht 4

De opdracht:

Maak twee functies, a() en b(). De functie a() zet een A op het scherm (met document.write()) en returnt true. Functie b() zet een B op het scherm en returnt false.
Vervolgens kopieer je de volgende code:
if(a() && b())
{
    document.write("<br />A && B");
}
document.write("<br />");
 
if(a() || b())
{
    document.write("<br />A || B");
}
document.write("<br />");
 
if(b() && a())
{
    document.write("<br />B && A");
}
document.write("<br />");
 
if(b() || a())
{
    document.write("<br />B || A");
}
document.write("<br />");


Voorspel de uitkomst van deze code (dus de tekst die op het scherm komt te staan). Daarna test je de code en verklaar je de uitkomst.

Het antwoord:

De uitkomst is als volgt:
AB
A
A || B
B
BA
B || A

Je ziet dat soms de andere functie helemaal niet uitgevoerd wordt terwijl die wel in de vergelijking staat. Dit komt omdat je bij een vergelijking soms al kunt zeggen wat de uitkomst is als je alleen de waarde aan de linkerkant weet.
Als je bij OF-operator aan de linkerkant al true hebt staan, dan is de uitkomst dus altijd true (want een van de twee is true). Dat betekent dat de functie aan de rechterkant niet meer uitgevoerd hoeft te worden, want de uitkomst daarvan maakt niet uit.
Hetzelfde geldt voor de EN-operator, als er aan de linkerkant false staat is de uitkomst toch altijd false. Dus hoeft de rechterkant niet meer bekeken te worden.

Hiermee kun je heel erg je voordeel doen. Stel je hebt een hele 'dure' functie (d.w.z: een functie die veel tijd kost omdat hij heel veel doet of een hoop gegevens moet verwerken) en je hebt een heel goedkope functie of zelfs alleen maar een variabele die een bepaalde waarde moet hebben. Dan kun je beter eerst een vergelijking op die variabele doen en daarna pas op die functie, zodat die functie alleen wordt uitgevoerd als het echt nodig is.
Voorbeeld: je hebt een variabele hasPermissions die zegt of de gebruiker de rechten heeft bestanden te doorzoeken, en een functie searchBigFileFor() die naar een string in een groot bestand zoekt (en dus een 'dure' functie is). Dan kan je het beste op deze manier je vergelijking schrijven:
if(hasPermissions && searchBigFileFor("Hello world!")) // Doorzoek het bestand alleen als je de permissies ervoor hebt
{
    // Tekst gevonden, doe iets
}