Javascript Flashcards

1
Q

Wat is het verschil tussen ‘interpreters’ en ‘compilers’?

A

Interpreters: lezen de code door.
Compilers: vertalen de code

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Leesbare menselijke code OF abstracte one liners?

A

Leesbare menselijke code, want mensen werken met je bestanden. De rest kan een systeem afhandelen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wat is een ‘call stack’?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wat is de Global Execution Context?

A

Global Execution Context is de eerste functie om een pagina te laden. Ook wel het window object.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wat is een Memory Heap?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wat is een goed gebruik met ‘listeners’?

A

Ze ook weer stoppen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Const object = { name: Maik }
Const obj = object
Obj.name = Tess

Wat is de waarde van object.name?

A

Tess, want je refereert naar een object. Het is een doorgeefluik. De juiste oplossing hier is om er een clone van te maken:

…object

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Functie in een object method die gebruik maakt van ‘this’, waar refereert die naar?

A

Het window object, omdat de ‘this’ niet is toegewezen. Tenzij je het volgende doet:

Functienaam.bind(this)

Of

Const self = this

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wat gebeurd er als je 5 toewijst aan een constant variable?

A

Dan voegt JS dit automatisch aan een Number object toe. Hierdoor kun je gebruik maken van de methods die het Number object bezit.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Class: een method staat buiten de constructor in een class, waarom?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

FP: wat is het voordeel om this.name = name te gebruiken in een Functie?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wat is impliciet binding?

A

Het woord ‘this’ wordt automatisch toegekend aan het object.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wat is expliciet binding?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Waarom wil je mutatie van variabelen en objecten voorkomen?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wat doet concat()?

Bijvoorbeeld: user.cart = user.cart.concat(item)

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Om te voorkomen dat je telkens user.cart hoeft te doen kun je…?

A

De cart uit user halen:

Const { cart } = user

17
Q

Wat doet Object.assign()?

return Object.assign({}, user, { cart: updateCart });

A

Dit returnt een nieuw object waarin user wordt toegevoegd en binnen user wordt cart aangepast met updateCart.

18
Q

Wat is memoization?

A

Dit is een optimalisatie techniek waarbij functie results worden gecacht. Dus wordt de cache result gebruikt als dezelfde input wordt gegeven.

19
Q

Wat doet een callback() functie?

A

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.

20
Q

Hoe wil je functioneel programmeren in de basis opstellen?

A

Zorg dat functies puur blijven. Dus niet muteren of zo min mogelijk.

21
Q

Inheritance of composable programming?

A

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

22
Q

Why use Promise?

A

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.

23
Q

Leg try…catch uit

A

Dit is bedoelt voor error handling voor synchrone code. En werkt alleen met die context. In tegenstelling tot Promise.

24
Q

Waarom Async Await?

A
  1. Het is leesbaarder dan promise.
  2. Je kan het flexibeler inzetten zoals:
    Const fetchUsers = Async function() …
  3. In de functie kun je een try…catch gebruiken om errors af te vangen.
25
Q

Wat doet dit:

Const { tiger, …rest } = animals

A

Hier haal je tiger uit animals array. Rest is dan een nieuw object met de overgebleven items van animals.

26
Q

[JS] hoe werkt onderstaande code?

displayCartPageUiExperiment && <Component></Component>

A

displayCartPageUiExperiment is een boolean.
Buiten het feit dat het true of false kan meekrijgen, kan het o.b.v. de waarde undefined ook een waarde ‘false’ krijgen.

27
Q

[JS] wat is een IIFE?

A

Een imediatly invoked function expression. (function() {})()

28
Q

[JS] wat zijn de voordelen van module patterns?

A
  1. Het maakt code onafhankelijk van de rest van de code.
  2. Het maakt code stabieler.
  3. Het maakt code prive en bewust wat je gebruikt en deelt met andere modules.
29
Q

[JS] undefined versus null, wanneer gebruik je wat en waarom?

A

Undefined gebruik je binnen Javascript als een property van een component niet doorgegeven wordt. Dan kan dit dus undefined zijn.

Null krijg je vaak terug als waarde van de server. Maar ook elders in de applicatie is het verstandig om null aan te geven omdat je dan bewust aangeeft dat de waarde leeg (null) is.

Als je wilt aangeven dat een variabele geen waarde heeft, maar wel gedefinieerd is, gebruik je undefined. Als je wilt aangeven dat een variabele bewust geen waarde heeft of dat een waarde is verwijderd, gebruik je null.

30
Q

[JS] useDebounce, wat is het en wanneer gebruik je het?

A

debouncen is om te voorkomen dat een WAARDE overschreven wordt in de tijd dat je dit wilt gebruiken. Je vertraagd deze overschrijving.

Dit komt van pas bij een zoekfunctie waarbij je wilt voorkomen dat een zoekwaarde overschreven wordt in de tijd dat de vorige nog verwerkt moest worden door het systeem. Vandaar de delay die je in kan stellen.

31
Q

[JS] als je eenmaal ? Gebruikt in chaining. Wat is dan goed om te doen?

A

De andere opties in de chaining ook optional te maken. Daardoor bouw je safety nets in. Bij undefined zal deze stoppen en verder gaan naar de volgende regel code.

32
Q

[JS] als je eenmaal ? Gebruikt in chaining. Wat is dan goed om te doen?

A

De andere opties in de chaining ook optional te maken. Daardoor bouw je safety nets in. Bij undefined zal deze stoppen en verder gaan naar de volgende regel code.

33
Q

[JS] wat is een best practice voor keys in een map functie?

A

Dat je ze uniek maakt en zo specifiek gericht op het item die je mapped. Bijvoorbeeld ‘string-{product.id}’ en niet index gebruiken omdat de volgorde van de inhoud van de array kan veranderen. En key 1 dan twee verschillende waardes heeft.

34
Q

[JS] Wat doet Object.hasOwn() en wanneer gebruik je het?

A

Dit checkt of een object een property bevat van ‘prop-x’. Dit zet je in op het moment of je wilt controleren of een object ‘prop-x’ bevat om vervolgens in je logica hiermee te werken.

const object1 = {
prop: ‘exists’,
};

console.log(Object.hasOwn(object1, ‘prop’));
// Expected output: true

console.log(Object.hasOwn(object1, ‘toString’));
// Expected output: false

console.log(Object.hasOwn(object1, ‘undeclaredPropertyValue’));
// Expected output: false

35
Q

Welk type is het meest geheugen efficiënt?

Nummer, string, functie, object of array

A
  1. Array: vast type data
  2. Functie: lichtgewicht, tenzij complexe closures.
  3. String: efficiënt als immutable, meer geheugen bij veel wijzigingen. —> dit kan dus efficiënt zijn wanneer je stringified.
  4. Object: minst efficiënt, door flexibiliteit en overhead)