Utmaningar
Fråga 05-01: Vad skrivs ut?
- [object Object];
- Ellen Nu
- Nu
- undefined
Kommentar
Typiskt slarvfel. result.lastName
är det nog som avses på sista raden.
Fråga 05-02: Vad skrivs ut?
- 3
- 2:34
- 2:22
- undefined
Kommentar
En slamkrypare. movies[1].length
är det kluriga. movies[1]
refererar till
det andra objektet i arrayen, och egenskapen length
på detta objekt ger 2:22
.
Fundera på vad som händer om du skriver movies[1].length.length
? Eller movies.length
?
Fråga 05-03: Vad skrivs ut?
- I have 12 somethings!
- I have 10 somethings!
- I have 0 somethings!
- undefined
Kommentar
objPrototype
är här vår prototyp utifrån vilken våra objekt skapas.
obj.prop
kommer att skapa en egenskap prop
som överskuggar prototypens
egenskap med samma namn. Vad händer om vi kommenterar ut raden obj.prop = quantity
?
Fråga 05-04: Är funktionen "run" en funktion utan sidoeffekter? (Pure function)
- Ja
- Nej
- Det beror på
- Kanske
Kommentar
Nej, funktionen har sidoeffekter då den påverkar det objekt vars referens skickas som ett argument till funktionen.
Fråga 05-05: Vad skrivs ut?
- 12
- undefined
- 10
- 22
Kommentar
Här ser vi effekten av att funktionen run
har sidoeffekter. Objektet myObj
refererar till, via obj
, påverkas.
Fråga 05-06: Vad skrivs ut?
- 12
- undefined
- 10
- 22
Kommentar
Då quantity
i detta fall är en värdetyp, så kopieras dess innehåll till
parametern q
när quantity
skickas som argument. Kopian q
ändras och
förstörs när funktionen run
returnerar. run
är i detta fall en funktion
utan sidoeffekter.
Fråga 05-07: Vad returnerar funktionen?
- ["Ellen", "Sture", "Maja"];
- [{name: "Ellen", points: 13}, {name: "Sture", points: 3}, {name: "Maja", points: 39}]
- { name: 'Sture', points: 3 }
- [ { name: 'Sture', points: 3 } ]
Kommentar
Iteratorfunktioner så som filter
, map
, reduce
, etc. är mycket
kraftfulla. Dessutom lämpar de sig väl att kombinera med "arrow"-funktioner:
Fråga 05-08: Hur många gånger kommer funktionen printTeachers() att anropas?
- 1
- 3
- 4
- Tills applikationen kraschar (evighetsloop)
Fråga 05-09 Vad skrivs ut?
- abyssinian, bombay, bengal, burmese, main coon
- 12, 2, 14, 2, 4
- 34
- Applikationen kraschar (evighetsloop)
Kommentar
Här används Object.keys
för att få ut objektets samtliga nycklar. Nyckeln
används sedan för att få ut värdet i objektet. Notationen här liknar den när
vi läser från arrayer. Kan du komma på ett enklare(?) sätt att göra samma sak?
Ett annat sätt som är vanligt att lösa ovanstående på är att använda sig av "destructing":