|
1 | 1 |
|
2 | | -# Global object |
| 2 | +# Objektet Global |
3 | 3 |
|
4 | | -The global object provides variables and functions that are available anywhere. By default, those that are built into the language or the environment. |
| 4 | +Objektet global indeholder variable og funktioner der er tilgængelige overalt. Som standard er de, der er indbygget i sproget eller miljøet. |
5 | 5 |
|
6 | | -In a browser it is named `window`, for Node.js it is `global`, for other environments it may have another name. |
| 6 | +I en browser kaldes det `window`, for Node.js er det `global`, og for andre miljøer kan det have et andet navn. |
7 | 7 |
|
8 | | -Recently, `globalThis` was added to the language, as a standardized name for a global object, that should be supported across all environments. It's supported in all major browsers. |
| 8 | +I den senere tid er `globalThis` tilføjet til sproget som et standardiseret navn for det globale objekt, som bør være understøttet i alle miljøer. Det er understøttet i alle store browsere. |
9 | 9 |
|
10 | | -We'll use `window` here, assuming that our environment is a browser. If your script may run in other environments, it's better to use `globalThis` instead. |
| 10 | +Vi vil dog bruge `window` her, da det antages at vores miljø er en browser. Hvis dit script skal køre i andre miljøer, er det bedre at bruge `globalThis` istedet. |
11 | 11 |
|
12 | | -All properties of the global object can be accessed directly: |
| 12 | +Elle egenskaber af det globale objekt kan tilgås direkte, uden at nævne det globale objekt direkte: |
13 | 13 |
|
14 | 14 | ```js run |
15 | | -alert("Hello"); |
16 | | -// is the same as |
17 | | -window.alert("Hello"); |
| 15 | +alert("Hej"); |
| 16 | +// er det samme som |
| 17 | +window.alert("Hej"); |
18 | 18 | ``` |
19 | 19 |
|
20 | | -In a browser, global functions and variables declared with `var` (not `let/const`!) become the property of the global object: |
| 20 | +I en browser vil globale funktioner og variable deklareret med `var` (ikke `let/const`!) blive en del af det globale objekt: |
21 | 21 |
|
22 | 22 | ```js run untrusted refresh |
23 | 23 | var gVar = 5; |
24 | 24 |
|
25 | | -alert(window.gVar); // 5 (became a property of the global object) |
| 25 | +alert(window.gVar); // 5 (er blevet en egenskab af det globale objekt) |
26 | 26 | ``` |
27 | 27 |
|
28 | | -Function declarations have the same effect (statements with `function` keyword in the main code flow, not function expressions). |
| 28 | +Deklaration af funktionerer har samme effekt som `var` (sætninger med `function`-nøgleord i hovedkoden, ikke funktionsudtryk). |
29 | 29 |
|
30 | | -Please don't rely on that! This behavior exists for compatibility reasons. Modern scripts use [JavaScript modules](info:modules) where such a thing doesn't happen. |
| 30 | +Du bør ikke gøre din kode afhængig af det! Denne adfærd eksisterer for kompatibilitetsformål. Moderne scripts bruger [JavaScript modules](info:modules) hvor det ikke sker. |
31 | 31 |
|
32 | | -If we used `let` instead, such thing wouldn't happen: |
| 32 | +Hvis vi bruger `let` i stedet for `var`, så bliver det ikke en egenskab af det globale objekt: |
33 | 33 |
|
34 | 34 | ```js run untrusted refresh |
35 | 35 | let gLet = 5; |
36 | 36 |
|
37 | | -alert(window.gLet); // undefined (doesn't become a property of the global object) |
| 37 | +alert(window.gLet); // undefined (bliver ikke en egenskab af det globale objekt) |
38 | 38 | ``` |
39 | 39 |
|
40 | | -If a value is so important that you'd like to make it available globally, write it directly as a property: |
| 40 | +Hvis en værdi er så vigtig, at du vil gøre den tilgængelig globalt, så skriv den direkte som en egenskab af det globale objekt: |
41 | 41 |
|
42 | 42 | ```js run |
43 | 43 | *!* |
44 | | -// make current user information global, to let all scripts access it |
| 44 | +// gør information om den nuværende bruger global, så alle scripts kan tilgå den |
45 | 45 | window.currentUser = { |
46 | 46 | name: "John" |
47 | 47 | }; |
48 | 48 | */!* |
49 | 49 |
|
50 | | -// somewhere else in code |
| 50 | +// et andet sted i koden |
51 | 51 | alert(currentUser.name); // John |
52 | 52 |
|
53 | | -// or, if we have a local variable with the name "currentUser" |
54 | | -// get it from window explicitly (safe!) |
| 53 | +// eller, hvis vi har en lokal variabel med navnet "currentUser" |
| 54 | +// hent den direkte fra window (sikker tilgang!) |
55 | 55 | alert(window.currentUser.name); // John |
56 | 56 | ``` |
57 | 57 |
|
58 | | -That said, using global variables is generally discouraged. There should be as few global variables as possible. The code design where a function gets "input" variables and produces certain "outcome" is clearer, less prone to errors and easier to test than if it uses outer or global variables. |
| 58 | +Med det sagt så er frarådes brugen af globale variabler generelt. Der bør være så få globale variabler som muligt. Design af kode hvor en funktion får "input" variabler og producerer et bestemt "output" er tydeligere, mindre udsat for fejl og lettere at teste end hvis den bruger ydre eller globale variabler. |
59 | 59 |
|
60 | | -## Using for polyfills |
| 60 | +## Brugbart til polyfills |
61 | 61 |
|
62 | | -We use the global object to test for support of modern language features. |
| 62 | +Vi kan bruge det globale objekt til at teste for understøttelse af moderne sprogfunktioner. |
63 | 63 |
|
64 | | -For instance, test if a built-in `Promise` object exists (it doesn't in really old browsers): |
| 64 | +For eksempel, test om et indbygget `Promise`-objekt eksisterer (det eksisterer ikke i virkelig gamle browsere): |
65 | 65 | ```js run |
66 | 66 | if (!window.Promise) { |
67 | | - alert("Your browser is really old!"); |
| 67 | + alert("Din browser er virkelig gammel!"); |
68 | 68 | } |
69 | 69 | ``` |
70 | 70 |
|
71 | | -If there's none (say, we're in an old browser), we can create "polyfills": add functions that are not supported by the environment, but exist in the modern standard. |
| 71 | +Hvis der ikke eksisterer en `Promise`-funktion (f.eks. i en gammel browser), kan vi oprette "polyfills": tilføj funktioner som ikke er understøttet af miljøet, men eksisterer i det moderne standard. |
72 | 72 |
|
73 | 73 | ```js run |
74 | 74 | if (!window.Promise) { |
75 | | - window.Promise = ... // custom implementation of the modern language feature |
| 75 | + window.Promise = ... // egen implementation af en moderne funktion |
76 | 76 | } |
77 | 77 | ``` |
78 | 78 |
|
79 | | -## Summary |
| 79 | +## Opsummering |
80 | 80 |
|
81 | | -- The global object holds variables that should be available everywhere. |
| 81 | +- Det globale objekt indeholder variable som skal være tilgængelige overalt. |
82 | 82 |
|
83 | | - That includes JavaScript built-ins, such as `Array` and environment-specific values, such as `window.innerHeight` -- the window height in the browser. |
84 | | -- The global object has a universal name `globalThis`. |
| 83 | + Det inkluderer JavaScript indbyggede funktioner, såsom `Array` og miljøspecifikke værdier, såsom `window.innerHeight` -- vindueshøjden i browseren. |
| 84 | +- Det globale objekt har et universelt navn `globalThis`. |
85 | 85 |
|
86 | | - ...But more often is referred by "old-school" environment-specific names, such as `window` (browser) and `global` (Node.js). |
87 | | -- We should store values in the global object only if they're truly global for our project. And keep their number at minimum. |
88 | | -- In-browser, unless we're using [modules](info:modules), global functions and variables declared with `var` become a property of the global object. |
89 | | -- To make our code future-proof and easier to understand, we should access properties of the global object directly, as `window.x`. |
| 86 | + ...Men ofte refereres det til med "gamle skole" miljøspecifikke navne, såsom `window` (browser) og `global` (Node.js). |
| 87 | +- Vi bør kun gemme værdier i det globale objekt, hvis de er virkelig globale for vores projekt. Og holde antallet af globale variabler lavt. |
| 88 | +- I browseren, medmindre vi bruger [modules](info:modules), bliver globale funktioner og variable deklareret med `var` til egenskaber af det globale objekt. |
| 89 | +- For at gøre vores kode fremtidssikker og lettere at forstå, bør vi tilgå egenskaber af det globale objekt direkte, som `window.x`. |
0 commit comments