JavaScript 7 - Valideren, variabelen, geldigheid, indexOf

                      JavaScript
1 / 23
suivant
Slide 1: Diapositive
InformaticaWOStudiejaar 4,5

Cette leçon contient 23 diapositives, avec quiz interactifs et diapositives de texte.

time-iconLa durée de la leçon est: 45 min

Éléments de cette leçon

                      JavaScript

Slide 1 - Diapositive

Cet élément n'a pas d'instructions

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

Cet élément n'a pas d'instructions

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

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 - Question ouverte

Cet élément n'a pas d'instructions

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

Cet élément n'a pas d'instructions

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

Cet élément n'a pas d'instructions

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

Cet élément n'a pas d'instructions

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

Slide 8 - Diapositive

Cet élément n'a pas d'instructions

Try / Catch
In Python gebruikten we try/except



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

Slide 9 - Diapositive

Cet élément n'a pas d'instructions

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

Slide 10 - Question ouverte

Cet élément n'a pas d'instructions

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

Cet élément n'a pas d'instructions

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

Cet élément n'a pas d'instructions

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

Cet élément n'a pas d'instructions

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

Slide 14 - Question ouverte

Cet élément n'a pas d'instructions

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

Cet élément n'a pas d'instructions

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

Cet élément n'a pas d'instructions

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

Cet élément n'a pas d'instructions

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

Slide 18 - Question ouverte

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

Cet élément n'a pas d'instructions

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

Cet élément n'a pas d'instructions

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

Slide 21 - Question ouverte

Cet élément n'a pas d'instructions

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

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

Cet élément n'a pas d'instructions