Javascript Flashcards
Wat is het verschil tussen ‘interpreters’ en ‘compilers’?
Interpreters: lezen de code door.
Compilers: vertalen de code
Leesbare menselijke code OF abstracte one liners?
Leesbare menselijke code, want mensen werken met je bestanden. De rest kan een systeem afhandelen.
Wat is een ‘call stack’?
Call stack slaat functies op die je aanroept (call) en stapelt ze wanneer je dieper in de functie naar andere functies verwijst. Eenmaal klaar in de diepst liggende functie, dan begint het afbouwen van de call stack.
Wat is de Global Execution Context?
Global Execution Context is de eerste functie om een pagina te laden. Ook wel het window object.
Wat is een Memory Heap?
Memory Heap is een ruimte in de JS engine die je kan gebruiken om informatie in op te slaan, zoals constante variabelen en functies. Alles wat je definieert.
Wat is een goed gebruik met ‘listeners’?
Ze ook weer stoppen
Const object = { name: Maik }
Const obj = object
Obj.name = Tess
Wat is de waarde van object.name?
Tess, want je refereert naar een object. Het is een doorgeefluik. De juiste oplossing hier is om er een clone van te maken:
…object
Functie in een object method die gebruik maakt van ‘this’, waar refereert die naar?
Het window object, omdat de ‘this’ niet is toegewezen. Tenzij je het volgende doet:
Functienaam.bind(this)
Of
Const self = this
Wat gebeurd er als je 5 toewijst aan een constant variable?
Dan voegt JS dit automatisch aan een Number object toe. Hierdoor kun je gebruik maken van de methods die het Number object bezit.
Class: een method staat buiten de constructor in een class, waarom?
Bij ‘new’ wordt de constructor iedere keer uitgevoerd vanwege nieuwe data. Terwijl de methode gebruikt wordt door alle instanties van de class. Dit zou extra geheugen in beslag nemen.
FP: wat is het voordeel om this.name = name te gebruiken in een Functie?
Je kan dan de name die als parameter aan de Functie wordt meegegeven direct toewijzen aan het ‘new’ object. Waardoor je newObject.name kan doen.
Wat is impliciet binding?
Het woord ‘this’ wordt automatisch toegekend aan het object.
Wat is expliciet binding?
Bijna hetzelfde als impliciet, maar dan gebruik je .bind() om het object toe te wijzen aan een functie waar het ‘this’ keyword naar moet verwijzen.
Waarom wil je mutatie van variabelen en objecten voorkomen?
Omdat het onvoorspelbaar gedrag in de code kan veroorzaken. Je veranderd iets dat een ander doel had.
Advies is ook om nieuwe variabelen te maken of te spreaden in het geval van een object.
Wat doet concat()?
Bijvoorbeeld: user.cart = user.cart.concat(item)
Dit is het mergen van arrays. Het maakt een nieuwe array van twee bestaande.
Alleen concat geeft een nieuwe array terug. Als je deze toewijst aan de bestaande array zoals het voorbeeld, dan blijft het oude object intact.
Om te voorkomen dat je telkens user.cart hoeft te doen kun je…?
De cart uit user halen:
Const { cart } = user
Wat doet Object.assign()?
return Object.assign({}, user, { cart: updateCart });
Dit returnt een nieuw object waarin user wordt toegevoegd en binnen user wordt cart aangepast met updateCart.
Wat is memoization?
Dit is een optimalisatie techniek waarbij functie results worden gecacht. Dus wordt de cache result gebruikt als dezelfde input wordt gegeven.
Wat doet een callback() functie?
Deze wordt opgeslagen in de cache. En de dependencies zorgen voor nieuwe data in de functie dat resulteert in een andere return waarde. Lees ook memoization.
Hoe wil je functioneel programmeren in de basis opstellen?
Zorg dat functies puur blijven. Dus niet muteren of zo min mogelijk.
Inheritance of composable programming?
Voorkeur composable omdat je kleine stukjes samenbrengt in een nieuwe functie.
Inheritance begint met een super class die zicht extend in sub classes. Waarbij alles aan een parent class wordt doorgegeven aan de sub classes
Why use Promise?
Dit is handig voor async Logic omdat je altijd iets terug krijgt zoals beloofd. Tegelijkertijd kun je andere code uitvoeren. En het error systeem werkt erg goed.
Leg try…catch uit
Dit is bedoelt voor error handling voor synchrone code. En werkt alleen met die context. In tegenstelling tot Promise.
Waarom Async Await?
- Het is leesbaarder dan promise.
- Je kan het flexibeler inzetten zoals:
Const fetchUsers = Async function() … - In de functie kun je een try…catch gebruiken om errors af te vangen.