Variabelen en objecten
declaratie
variabelen |
|
conversie
toString() | zet getallen e.d. om naar een string |
|
parseInt() | zet teksten e.d. om naar een geheel getal |
|
parseFloat() | zet teksten e.d. om naar een kommagetal |
|
NaN, Infinity, undefined, null
waarde | betekenis | voorbeeld |
---|---|---|
NaN , isNaN()
|
zou een getal moeten zijn, maar is het niet |
|
Infinity
|
oneindige waarde |
|
undefined
|
heeft nog geen waarde gekregen |
|
null
|
idem als undefined , maar betekent eerder "heeft bewust geen waarde"
|
|
Strings
declaratie
gebruik quotes |
|
string interpolatie |
|
multiline string |
|
string properties en methodes
property/methode | omschrijving | voorbeeld |
---|---|---|
|
||
length
|
aantal karakters |
|
includes(str)
|
controleert of een string str bevat |
|
indexOf(str)
|
eerste positie van str (-1 indien niet gevonden) |
|
replaceAll(str1, str2)
|
vervangt alle str1 door str2 |
|
split(separator)
|
splitst een string in een array |
|
toLowerCase()
|
zet om naar kleine letters |
|
toUpperCase()
|
zet om naar kleine letters |
|
Arrays en objecten
declaratie
arrays |
|
objecten |
|
array properties en methodes
Javascript kent geen onderscheid tussen arrays, lijsten, stacks, queues enz... zoals in C#; alles is een array.
property/methode | omschrijving | voorbeeld |
---|---|---|
|
||
length
|
aantal elementen |
|
contains(item)
|
controleert of de rij item bevat |
|
indexOf(item)
|
eerste index van item (-1 indien niet gevonden) |
|
join(glue)
|
voeg items samen tot een string |
|
pop()
|
verwijder en return element achteraan de rij |
|
push(item)
|
voeg item toe achteraan de rij |
|
Functies
klassieke declaratie |
|
declaratie als constante |
|
declaratie met arrow expressie |
|
optionele parameters |
|
Controlestructuren
selecties
code | omschrijving | voorbeeld |
---|---|---|
if
|
als |
|
if - else
|
als - dan |
|
voorwaarde1 ? waarde1 : waarde2
|
ternaire operator |
|
if - else - if
|
als - dan - als |
|
switch - case
|
cascade selectiestructuur |
|
voorwaarde1 ? waarde1
|
getrapte ternaire operator |
|
iteraties
code | omschrijving | voorbeeld |
---|---|---|
for
|
iteratie met vaste grenzen |
|
for-of
|
iteratie over een array |
|
for-in
|
iteratie over de keys van een object |
|
forEach()
|
iteratie met callback methode |
|
Document Object Model
querying
Opmerking: alle andere methodes als getElementById()
enz... mogen niet gebruikt worden
functie | omschrijving | voorbeeld |
---|---|---|
querySelector()
|
zoek eerste element op basis van een CSS selector |
|
querySelectorAll()
|
zoek alle elementen op basis van een CSS selector |
|
navigatie
property | omschrijving |
---|---|
node.children |
collectie van children van de huidige node |
node.nextElementSibling |
volgende sibling (null indien niet gevonden) |
node.parentNode |
parent van de huidige node |
node.previousElementSibling |
vorige sibling (null indien niet gevonden) |
methode | omschrijving | voorbeeld |
---|---|---|
node.closest(...) |
zoekt dichtstbijzijnde bovenliggende element (ancestor) te vinden dat overeenkomt met een opgegeven CSS-selector |
|
manipulatie
property | betekenis | voorbeeld |
---|---|---|
|
||
innerHTML
|
HTML binnen een element |
|
textContent
|
tekst binnen een element (negeer tags) |
|
value , src , href ...
|
HTML attributen verschijnen als Javascript properties |
|
classList
|
lijst van CSS classes voor dit element |
|
style
|
geeft rechtstreeks toegang tot CSS properties |
|
dataset
|
geeft toegang tot custom data-* attributen |
|
Events
event listeners
Events voeg je altijd toe met addEventListener(event, callback)
. Enkele codefragmenten:
code | omschrijving | voorbeelden |
---|---|---|
addEventListener(evt, callback)
|
voer callback() uit als event optreedt |
|
this
|
element waarop de event hander gedefinieerd is |
|
e.target
|
element waarop het event op plaatsvond |
|
e.preventDefault()
|
verhinder de standaardactie van links, submitknoppen enz... |
|
soorten events
event | omschrijving | typische targets |
---|---|---|
click |
muisklik | alle elementen |
mouseover |
muis erboven | alle elementen |
mouseout |
muis ervan weg | alle elementen |
keydown |
toets ingedrukt | tekst elementen |
keyup |
toets losgelaten | tekst elementen |
focus |
element krijgt focus | form elementen |
blur |
element verliest focus | form elementen |
submit |
formulier wordt verstuurd | <form> |
input |
waarde wordt veranderd | <input> en <textarea> |
change |
waarde is veranderd | <input> , <textarea> , <select> |
event object
Het event object e
in ...addEventListener('keydown', (e) => { ... });
bevat informatie over het event.
property | omschrijving | event type |
---|---|---|
e.target |
het element waarop het event plaatsvond | alle event types |
e.key |
ingevoerd karakter, b.v 'Z' |
toetsenbord |
e.code |
ingedrukte toets, b.v 'KeyZ' |
toetsenbord |
e.shiftKey |
werd de shift ingedrukt, b.v true |
toetsenbord |
e.ctrlKey |
werd de control ingedrukt, b.v true |
toetsenbord |
e.clientX |
horizontale positie van de muis (naar rechts) | muis |
e.clientY |
verticale positie van de muis (naar onder) | muis |
Games
Enkele veelgebruikte API's en technieken waar je van gehoord moet hebben:
API | omschrijving | toestemming nodig? |
---|---|---|
drag drop API | drag drop, b.v. bestanden of afbeeldingen naar een webpagina slepen | nee |
geolocation API | opvragen locatie van de gebruiker | ja |
localStorage | bewaren van gegevens op de browser; worden niet naar de server gestuurd zoals cookies | nee |
notification API | kleine notificatie popups rechtsonder | ja |
speech API | tekst naar speech en speech naar tekst | ja (voor toegang microfoon) |
sound API | zelf geluiden synthetiseren | nee |
webcam API | gebruik webcam van de gebruiker (toestemming nodig) | nee |
webGL | 3D graphics genereren in webpagina's | nee |
Drie manieren om een game loop te maken:
met setTimeout() |
|
met setInterval() |
|
met requestAnimationFrame() |
|
Web API
Schematisch de code van een fetch()
(schrap de stukken code die je niet nodig hebt):
async function getApiData() {
// build request url
const url = 'https://api.somedomain.com/api/method/...';
const params = new URLSearchParams();
params.append('api_key', API_KEY);
params.append('param1', 'val1');
params.append('param2', 'val2');
params.append('...', '...');
url += '?' + params.toString();
// build options
const options = {
method: '...',
headers: {
'Authorization': 'Bearer ghp_fIWhq1DrL...'
...
}
...
};
// fetch data with options
const resp = await fetch(url, options);
if (!resp.ok) {
console.log('opvragen github repos mislukt');
return;
}
const data = await resp.json();
// process data
data.forEach(entry => {
...
});
}
async function doFetch() {
console.log('fetching data...');
await getApiData();
console.log('...done');
}
doFetch();
Debugging
code | omschrijving | voorbeeld |
---|---|---|
console.log()
|
schrijf tekst naar de console |
|
console.error()
|
schrijf fout naar de console |
|
debugger
|
plaats een breekpunt |
|