JavaScript 7 - Valideren, variabelen, geldigheid, indexOf

                      JavaScript
1 / 23
volgende
Slide 1: Tekstslide
InformaticaWOStudiejaar 4,5

In deze les zitten 23 slides, met interactieve quizzen en tekstslides.

time-iconLesduur is: 45 min

Onderdelen in deze les

                      JavaScript

Slide 1 - Tekstslide

Deze slide heeft geen instructies

Fundament
Kerndomein D. Programmeren

Ontwikkelen met JavaScript (JS)
Hoofdstuk 5.7 tot en met 5.9
https://fundament-online.nl/leeromgeving/hoofdstuk.php?id=10560

Slide 2 - Tekstslide

Deze slide heeft geen instructies

Leerdoelen:
Je kunt na deze les (in JS):
  • beschrijven wat valideren is
  • op papier een variabele valideren
  • uitleggen wat er gebeurt als je eigen functie dezelfde naam heeft als een standaard functie
  • uitleggen wat er gebeurt als je eigen functie dezelfde naam heeft als een variabele in dezelfde code

Slide 3 - Tekstslide

Rode achtergrond betekent: klas is stil, dit zijn de leerdoelen en quizzes waarbij niet overlegd mag worden.

Doel van deze les is om het leren zichtbaar te maken voor zowel leerling als docent.
Schrijf een JS functie "optellen"
met 2 parameters die
deze optelt en teruggeeft
timer
3:00

Slide 4 - Open vraag

Deze slide heeft geen instructies

Valideren
Het controleren van gegevens op correctheid noemen we (net als bij Python) valideren

Voorbeelden van valideren zijn:
  • is de variabele een getal? of juist een string?
  • heeft de gebruiker een geldige e-mail ingevoerd?
  • voldoet het gegeven aan de eisen? (bv tussen 1 en 10)

Slide 5 - Tekstslide

Deze slide heeft geen instructies

Valideren via if statement
Valideren kun je doen met diverse manieren, vaak een
if statement in combinatie met een functie of vergelijking:
  • if ( a == NaN )
  • if ( a > 10 && a < 20 )
  • if ( !a )
  • etc.

Slide 6 - Tekstslide

Deze slide heeft geen instructies

Valideren via typeof
Om het type te controleren gebruikt JS de typeof operator

let a = prompt("Geef antwoord!");
console.log(typeof a); // je krijgt string terug met het type

De mogelijke uitkomsten zijn ondermeer:
"undefined", "object", "boolean", "number", "string"

Slide 7 - Tekstslide

Deze slide heeft geen instructies

Valideren met while-loop
Door een while-loop te combineren met een prompt kun je de invoer herhaaldelijk valideren:

Slide 8 - Tekstslide

Deze slide heeft geen instructies

Try / Catch
In Python gebruikten we try/except



In JavaScript is dat (natuurlijk) iets anders: try / catch!

Slide 9 - Tekstslide

Deze slide heeft geen instructies

Schrijf JS waar gebruiker
leeftijd moet ingeven.
Valideer op ouder dan 18!
timer
3:00

Slide 10 - Open vraag

Deze slide heeft geen instructies

Valideren via .indexOf() 1/6
Via de methode .indexOf() kun je controleren of "iets" een bepaalde waarde bevat:
let haystack = "Hello world, welcome to the universe.";
let needle = "l";
let resultaat = haystack.indexOf(needle); // uitkomst: 2

De grote tekst noemen ze haystack, de zoekterm needle

Slide 11 - Tekstslide

Deze slide heeft geen instructies

Valideren via .indexOf() 2/6
Je kunt ook vanaf een bepaalde positie zoeken:
let tekst = "Hello world, welcome to the universe.";
let resultaat = tekst.indexOf("l", 5); // uitkomst: 9

Als de needle gevonden wordt, krijg je een positief getal terug met de index in de haystack
Belangrijk: niet gevonden? dan krijg je -1 terug!

Slide 12 - Tekstslide

Deze slide heeft geen instructies

Valideren via .indexOf() 3/6
Je kunt met .indexOf() dus ook kijken of iets een bepaald teken heeft (bijvoorbeeld een "@")

Dat kan handig zijn als je een e-mail wil valideren

Maar een e-mail moet aan meer eisen voldoen... toch?

Slide 13 - Tekstslide

Deze slide heeft geen instructies

Wat zijn eisen voor
een geldige e-mail?
timer
2:00

Slide 14 - Open vraag

Deze slide heeft geen instructies

Valideren via .indexOf() 4/6
links van de @ heet "lokaal" en rechts "domain"
  • het e-mail bevat precies 1 "@"
  • het e-mail bevat geen spaties
  • lokaal heeft letters of nummers
  • domain heeft minimaal 1 "."
  • er mogen niet meerdere "." direct naast elkaar staan
  • lokaal mag niet beginnen met een "."

Slide 15 - Tekstslide

Deze slide heeft geen instructies

Valideren via .indexOf() 5/6
Je merkt dat er meer eisen zijn en dat deze lastiger te beschrijven zijn dan je in eerste instantie zou denken

Een Nederlands telefoonnummer is beter te valideren... als je maar rekening houdt met spaties en koppeltekens ("-") is het niet meer dan 10 cijfers... 
hoe houden we rekening met spaties en koppeltekens?

Slide 16 - Tekstslide

Deze slide heeft geen instructies

Valideren via .indexOf() 6/6
via de methode .replace() vervangen we één karakter met een ander karakter... dus beter in dit geval is .replaceAll()


let nummer = "075-612 74 74";
nummer = nummer.replace("-", "").replace(" ","");
console.log(nummer) // "07561274 74"

Slide 17 - Tekstslide

Deze slide heeft geen instructies

Maak een JS functie om een
Nederlands telefoonnr te valideren
(hint: .length is een attribuut!)
timer
3:00

Slide 18 - Open vraag

function checktel(nummer) {
    nummer = nummer.replaceAll("-","").replaceAll(" ","");
    if (nummer.length != 10) {
        console.log(nummer + " : is NIET valide!");
    } else {
        console.log(nummer + " : is valide!");
    }
}
checktel("075-612 74 74"); // valide
checktel("075612 74745"); // niet valide
Code conventions? 1/2
Eerder hebben we het gehad over code conventions 
Als je een eigen functie maakt met de benaming van een standaard functie, dan wordt de standaard functie overschreven

Het gaat ook mis als je een eigen functie maakt met de benaming van een eerder gemaakte variabele!

Slide 19 - Tekstslide

Deze slide heeft geen instructies

Code conventions? 2/2
Je krijgt een foutmelding als je een eigen functie maakt met de benaming van een eerder gemaakte variabele: 



Deze code geeft dus een foutmelding:

Slide 20 - Tekstslide

Deze slide heeft geen instructies

Schrijf JS while loop
leeftijd van een gebruiker
Antwoord moet groter zijn dan 18
timer
3:00

Slide 21 - Open vraag

Deze slide heeft geen instructies

Leerdoelen:
Je kunt nu:
  • beschrijven wat valideren is
  • op papier een variabele valideren
  • uitleggen wat er gebeurt als je eigen functie dezelfde naam heeft als een standaard functie
  • uitleggen wat er gebeurt als je eigen functie dezelfde naam heeft als een variabele in dezelfde code

Slide 22 - Tekstslide

Rode achtergrond betekent: klas is stil, dit zijn de leerdoelen en quizzes waarbij niet overlegd mag worden.

Doel van deze les is om het leren zichtbaar te maken voor zowel leerling als docent.

Slide 23 - Tekstslide

Deze slide heeft geen instructies