Skip to content

Commit 8fe7655

Browse files
authored
Merge pull request #257 from ockley/master
Arrow functions revisited
2 parents 7ef91f4 + 2b16c76 commit 8fe7655

File tree

1 file changed

+42
-42
lines changed
  • 1-js/06-advanced-functions/12-arrow-functions

1 file changed

+42
-42
lines changed
Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
1-
# Arrow functions revisited
1+
# Arrow funktioner genbesøgt
22

3-
Let's revisit arrow functions.
3+
Lad os se på arrow funktioner igen.
44

5-
Arrow functions are not just a "shorthand" for writing small stuff. They have some very specific and useful features.
5+
Arrow funktioner er ikke bare en "shorthand" for at skrive kode der fylder lidt. De har nogle meget specifikke og nyttige features.
66

7-
JavaScript is full of situations where we need to write a small function that's executed somewhere else.
7+
JavaScript er fuld af situationer hvor vi skal skrive en lille funktion, som skal køres et andet sted.
88

9-
For instance:
9+
For eksempel:
1010

11-
- `arr.forEach(func)` -- `func` is executed by `forEach` for every array item.
12-
- `setTimeout(func)` -- `func` is executed by the built-in scheduler.
13-
- ...there are more.
11+
- `arr.forEach(func)` -- `func` kaldes af `forEach` for hvert element i arrayet.
12+
- `setTimeout(func)` -- `func` kaldes af den indbyggede planlægger.
13+
- ...der er flere.
1414

15-
It's in the very spirit of JavaScript to create a function and pass it somewhere.
15+
Det ligger i JavaScript's ånd at oprette funktioner og give dem videre til andre.
1616

17-
And in such functions we usually don't want to leave the current context. That's where arrow functions come in handy.
17+
Og i sådanne funktioner ønsker vi normalt ikke at forlade den nuværende kontekst. Det er hvor arrow funktioner kommer ind i spil.
1818

19-
## Arrow functions have no "this"
19+
## Arrow funktioner har ingen "this"
2020

21-
As we remember from the chapter <info:object-methods>, arrow functions do not have `this`. If `this` is accessed, it is taken from the outside.
21+
Som vi husker fra kapitlet <info:object-methods>, har arrow funktioner ingen `this`. Hvis `this` tilgås, tages det fra det ydre område.
2222

23-
For instance, we can use it to iterate inside an object method:
23+
For eksempel kan vi bruge det til at iterere inde i en objektmetode:
2424

2525
```js run
2626
let group = {
27-
title: "Our Group",
28-
students: ["John", "Pete", "Alice"],
27+
title: "Vores gruppe",
28+
students: ["Martin", "Pia", "Hanne"],
2929

3030
showList() {
3131
*!*
@@ -39,14 +39,14 @@ let group = {
3939
group.showList();
4040
```
4141

42-
Here in `forEach`, the arrow function is used, so `this.title` in it is exactly the same as in the outer method `showList`. That is: `group.title`.
42+
Her i `forEach` bliver arrow funktionen brugt så `this.title` i den er præcist den samme som i den ydre metode `showList` ... som er: `group.title`.
4343

44-
If we used a "regular" function, there would be an error:
44+
Hvis vi brugte en "regulær" funktion ville vi få en fejl:
4545

4646
```js run
4747
let group = {
48-
title: "Our Group",
49-
students: ["John", "Pete", "Alice"],
48+
title: "Vores gruppe",
49+
students: ["Martin", "Pia", "Hanne"],
5050

5151
showList() {
5252
*!*
@@ -61,28 +61,28 @@ let group = {
6161
group.showList();
6262
```
6363

64-
The error occurs because `forEach` runs functions with `this=undefined` by default, so the attempt to access `undefined.title` is made.
64+
Fejlen sker fordi `forEach` kører funktioner med `this=undefined` som standard så den prøver at tilgå `undefined.title`.
6565

66-
That doesn't affect arrow functions, because they just don't have `this`.
66+
Det sker ikke med arrow funktioner fordi de ikke har noget eget `this`.
6767

68-
```warn header="Arrow functions can't run with `new`"
69-
Not having `this` naturally means another limitation: arrow functions can't be used as constructors. They can't be called with `new`.
68+
```warn header="Arrow funktioner kan ikke køre med `new`"
69+
Det, ikke at have eget `this` giver selvfølgelig også nogle begrænsninger: arrow funktioner kan ikke bruges som konstruktører (constructors). De kan ikke kaldes med `new`.
7070
```
7171
72-
```smart header="Arrow functions VS bind"
73-
There's a subtle difference between an arrow function `=>` and a regular function called with `.bind(this)`:
72+
```smart header="Arrow funktioner VS bind"
73+
Der er en lille forskel mellem en arrow funktion `=>` og en regulær funktion kaldt med `.bind(this)`:
7474
75-
- `.bind(this)` creates a "bound version" of the function.
76-
- The arrow `=>` doesn't create any binding. The function simply doesn't have `this`. The lookup of `this` is made exactly the same way as a regular variable search: in the outer lexical environment.
75+
- `.bind(this)` skaber en "bundet version" af funktionen.
76+
- arrow `=>` skaber ingen binding. Funktionen har simpelthen ikke noget `this`. Et opslag af `this` udføres på præcis samme måde som en hver anden opslag til variable: i dens ydre leksikale miljø.
7777
```
7878

79-
## Arrows have no "arguments"
79+
## Arrows har ingen "arguments"
8080

81-
Arrow functions also have no `arguments` variable.
81+
Arrow funktioner har heller ikke variablen `arguments`.
8282

83-
That's great for decorators, when we need to forward a call with the current `this` and `arguments`.
83+
Det er perfekt for decorators når vi skal videresende et kald med det aktuelle `this` og `arguments`.
8484

85-
For instance, `defer(f, ms)` gets a function and returns a wrapper around it that delays the call by `ms` milliseconds:
85+
FFor eksempel modtager `defer(f, ms)` en funktion og returnerer en wrapper der forsinker kaldet til funktionen med `ms` millisekunder:
8686

8787
```js run
8888
function defer(f, ms) {
@@ -92,14 +92,14 @@ function defer(f, ms) {
9292
}
9393

9494
function sayHi(who) {
95-
alert('Hello, ' + who);
95+
alert('Hej ' + who);
9696
}
9797

9898
let sayHiDeferred = defer(sayHi, 2000);
99-
sayHiDeferred("John"); // Hello, John after 2 seconds
99+
sayHiDeferred("Karsten"); // Hej, Karsten efter 2 sekunder
100100
```
101101

102-
The same without an arrow function would look like:
102+
Det samme uden arrow funktion vil se således ud:
103103

104104
```js
105105
function defer(f, ms) {
@@ -112,15 +112,15 @@ function defer(f, ms) {
112112
}
113113
```
114114

115-
Here we had to create additional variables `args` and `ctx` so that the function inside `setTimeout` could take them.
115+
Her er vi nødt til at oprette yderligere variable (`args` og `ctx`) så funktionen inde i `setTimeout` kan modtage dem.
116116

117-
## Summary
117+
## Opsummering
118118

119-
Arrow functions:
119+
Arrow funktioner:
120120

121-
- Do not have `this`
122-
- Do not have `arguments`
123-
- Can't be called with `new`
124-
- They also don't have `super`, but we didn't study it yet. We will on the chapter <info:class-inheritance>
121+
- Har ikke noget `this`
122+
- Har ikke variablen `arguments`
123+
- Kan ikke kaldes med `new`
124+
- De har heller ikke nogen `super`, men det har vi ikke set på endnu. Det gør vi i kapitlet <info:class-inheritance>
125125

126-
That's because they are meant for short pieces of code that do not have their own "context", but rather work in the current one. And they really shine in that use case.
126+
Det er fordi de er beregnet til mindre kodestykker der ikke arbejder med egen kontekst men beror på den aktuelle under afvikling. Og det er de til gengæld virkelig gode til.

0 commit comments

Comments
 (0)