You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/03-strict-mode/article.md
+40Lines changed: 40 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,8 +19,12 @@ Beispielsweise:
19
19
...
20
20
```
21
21
22
+
<<<<<<< HEAD
22
23
Wir werden bald Funktionen (eine Möglichkeit, Befehle zu gruppieren) lernen. Mit Blick auf die Zukunft sei angemerkt, dass `"use strict"` anstelle des gesamten Skripts am Anfang des Funktionskörpers stehen kann. Auf diese Weise wird der strikte Modus nur in dieser Funktion aktiviert. Normalerweise wird es jedoch für das gesamte Skript verwendet.
23
24
25
+
=======
26
+
Quite soon we're going to learn functions (a way to group commands), so let's note in advance that `"use strict"` can be put at the beginning of a function. Doing that enables strict mode in that function only. But usually people use it for the whole script.
27
+
>>>>>>> cd2c7ce3c8f033e6f7861ed1b126552e41ba3e31
24
28
25
29
````warn header="Stellen sicher, dass \"use strict\" am Anfang steht"
26
30
Stelle sicher, dass `"use strict"` am Anfang deiner Skripte steht, da sonst der strikte Modus möglicherweise nicht aktiv ist.
@@ -47,11 +51,21 @@ Sobald wir in den strikten Modus wechseln, gibt es kein Zurück mehr.
47
51
48
52
## Browser-Konsole
49
53
54
+
<<<<<<< HEAD
50
55
Wenn du in Zukunft eine Browserkonsole zum Testen von Funktionalitäten verwendest, beachte bitte, dass `use strict` standardmäßig nicht verwendet wird.
56
+
=======
57
+
When you use a [developer console](info:devtools) to run code, please note that it doesn't `use strict` by default.
58
+
>>>>>>> cd2c7ce3c8f033e6f7861ed1b126552e41ba3e31
51
59
52
60
Manchmal, wenn `use strict` einen Unterschied macht, erhältst du falsche Ergebnisse.
53
61
62
+
<<<<<<< HEAD
54
63
Du kannst versuchen, durch Drücken von `key:Umschalt+Eingabetaste` mehrere Zeilen einzugeben und `use strict` wie folgt an den Anfang zu setzen:
64
+
=======
65
+
So, how to actually `use strict` in the console?
66
+
67
+
First, you can try to press `key:Shift+Enter` to input multiple lines, and put `use strict` on top, like this:
68
+
>>>>>>> cd2c7ce3c8f033e6f7861ed1b126552e41ba3e31
55
69
56
70
```js
57
71
'use strict'; <Umschalt+Eingabe für eine neue Zeile>
@@ -61,12 +75,17 @@ Du kannst versuchen, durch Drücken von `key:Umschalt+Eingabetaste` mehrere Zeil
61
75
62
76
Es funktioniert in den meisten Browsern, wie Firefox und Chrome.
63
77
78
+
<<<<<<< HEAD
64
79
Wenn dies nicht der Fall ist, besteht die zuverlässigste Möglichkeit, um `use strict` sicherzustellen, darin, den Code wie folgt in die Konsole einzugeben:
80
+
=======
81
+
If it doesn't, e.g. in an old browser, there's an ugly, but reliable way to ensure `use strict`. Put it inside this kind of wrapper:
82
+
>>>>>>> cd2c7ce3c8f033e6f7861ed1b126552e41ba3e31
65
83
66
84
```js
67
85
(function() {
68
86
'use strict';
69
87
88
+
<<<<<<<HEAD
70
89
// ...Dein Code...
71
90
})()
72
91
```
@@ -83,3 +102,24 @@ Im Moment genügt es, allgemein zu wissen:
83
102
2. Der strikte Modus wird aktiviert, indem `"use strict"` am Anfang eines Skripts oder einer Funktion platziert wird. Verschiedene Sprachfunktionen, wie "Klassen" und "Module", aktivieren den strikten Modus automatisch.
84
103
3. Der strikte Modus wird von allen modernen Browsern unterstützt.
85
104
4. Wir empfehlen, Skripte immer mit `"use strict"` zu starten. Alle Beispiele in diesen Tutorial gehen von einem strengen Modus aus, sofern nicht (sehr selten) anders angegeben.
105
+
=======
106
+
// ...your code here...
107
+
})()
108
+
```
109
+
110
+
## Should we "use strict"?
111
+
112
+
The question may sound obvious, but it's not so.
113
+
114
+
One could recommend to start scripts with `"use strict"`... But you know what's cool?
115
+
116
+
Modern JavaScript supports "classes" and "modules" - advanced language structures (we'll surely get to them), that enable `use strict` automatically. So we don't need to add the `"use strict"` directive, if we use them.
117
+
118
+
**So, for now `"use strict";` is a welcome guest at the top of your scripts. Later, when your code is all in classes and modules, you may omit it.**
119
+
120
+
As of now, we've got to know about `use strict` in general.
121
+
122
+
In the next chapters, as we learn language features, we'll see the differences between the strict and old modes. Luckily, there aren't many and they actually make our lives better.
123
+
124
+
All examples in this tutorial assume strict mode unless (very rarely) specified otherwise.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/05-types/article.md
+74-4Lines changed: 74 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,16 +1,28 @@
1
1
# Datentypen
2
2
3
+
<<<<<<< HEAD
3
4
Eine Variable in JavaScript kann beliebige Daten enthalten. Eine Variable kann in einem Moment eine Zeichenkette und in einem anderen eine Zahl sein:
5
+
=======
6
+
A value in JavaScript is always of a certain type. For example, a string or a number.
7
+
8
+
There are eight basic data types in JavaScript. Here, we'll cover them in general and in the next chapters we'll talk about each of them in detail.
9
+
10
+
We can put any type in a variable. For example, a variable can at one moment be a string and then store a number:
11
+
>>>>>>> cd2c7ce3c8f033e6f7861ed1b126552e41ba3e31
4
12
5
13
```js
6
14
// kein Fehler
7
15
let message ="Hallo";
8
16
message =123456;
9
17
```
10
18
19
+
<<<<<<< HEAD
11
20
Programmiersprachen, die solche Dinge erlauben, werden als "dynamisch typisiert" bezeichnet, was bedeutet, dass es Datentypen gibt, aber Variablen an keine von ihnen gebunden sind.
12
21
13
22
Es gibt acht grundlegende Datentypen in JavaScript. Hier werden wir sie allgemein behandeln und in den nächsten Kapiteln detailliert auf sie eingehen.
23
+
=======
24
+
Programming languages that allow such things, such as JavaScript, are called "dynamically typed", meaning that there exist data types, but variables are not bound to any of them.
25
+
>>>>>>> cd2c7ce3c8f033e6f7861ed1b126552e41ba3e31
14
26
15
27
## Number
16
28
@@ -64,21 +76,38 @@ Mehr über das Arbeiten mit Zahlen erfahren wir in diesem Kapitel <info:number>.
64
76
65
77
## BigInt
66
78
79
+
<<<<<<<HEAD
67
80
In JavaScript kann der Typ "number" keine Ganzzahlwerte darstellen, die größer als <code>2<sup>53</sup></code> (oder kleiner als <code>-2<sup>53</sup></code> für Negative), sind. Das ist eine technische Einschränkung, die durch ihre interne Darstellung verursacht wird. Das sind ungefähr 16 Dezimalstellen, daher ist die Beschränkung für die meisten Zwecke kein Problem, aber manchmal benötigen wir wirklich große Zahlen, z.B. für Verschlüsselungen oder Zeitstempel mit Mikrosekundengenauigkeit.
81
+
=======
82
+
In JavaScript, the "number" type cannot represent integer values larger than <code>(2<sup>53</sup>-1)</code> (that's `9007199254740991`), or less than <code>-(-2<sup>53</sup>-1)</code> for negatives. It's a technical limitation caused by their internal representation.
83
+
84
+
For most purposes that's quite enough, but sometimes we need really big numbers, e.g. for cryptography or microsecond-precision timestamps.
85
+
>>>>>>> cd2c7ce3c8f033e6f7861ed1b126552e41ba3e31
68
86
69
87
Der Typ `BigInt` wurde kürzlich der Sprache hinzugefügt, um Ganzzahlen beliebiger Länge darzustellen.
70
88
89
+
<<<<<<< HEAD
71
90
Ein `BigInt` wird durch Anhängen von `n` an das Ende einer Ganzzahl erstellt:
91
+
=======
92
+
A `BigInt` value is created by appending `n` to the end of an integer:
93
+
>>>>>>> cd2c7ce3c8f033e6f7861ed1b126552e41ba3e31
72
94
73
95
```js
74
96
// Das "n" am Ende bedeutet, dass es ein BigInt ist
Da `BigInt`-Zahlen selten benötigt werden, haben wir ihnen ein eigenes Kapitel gewidmet <info:bigint>.
79
102
80
103
```smart header="Kompatibilitätsprobleme"
81
104
Derzeit wird `BigInt` in Firefox und Chrome unterstützt, nicht jedoch in Safari/IE/Edge.
105
+
=======
106
+
As `BigInt` numbers are rarely needed, we don't cover them here, but devoted them a separate chapter <info:bigint>. Read it when you need such big numbers.
107
+
108
+
```smart header="Compatability issues"
109
+
Right now `BigInt` is supported in Firefox/Chrome/Edge, but not in Safari/IE.
110
+
>>>>>>> cd2c7ce3c8f033e6f7861ed1b126552e41ba3e31
82
111
```
83
112
84
113
## String
@@ -163,7 +192,11 @@ In JavaScript ist `null` kein "Verweis auf ein nicht vorhandenes Objekt" oder ei
163
192
164
193
Es ist nur ein spezieller Wert, der "nichts", "leer" oder "Wert unbekannt" darstellt.
165
194
195
+
<<<<<<< HEAD
166
196
Der obige Code besagt, dass `age` aus irgendeinem Grund unbekannt oder leer ist.
197
+
=======
198
+
The code above states that `age` is unknown.
199
+
>>>>>>> cd2c7ce3c8f033e6f7861ed1b126552e41ba3e31
167
200
168
201
## Der Wert "undefined"
169
202
@@ -174,30 +207,50 @@ Die Bedeutung von `undefined` ist "Wert ist nicht zugewiesen".
174
207
Wenn eine Variable deklariert, aber nicht zugewiesen ist, ist ihr Wert `undefined`:
175
208
176
209
```js run
177
-
letx;
210
+
letage;
178
211
212
+
<<<<<<<HEAD
179
213
alert(x); // zeigt "undefined"
180
214
```
181
215
182
216
Technisch gesehen ist es möglich, jeder Variablen ein `undefined` zuzuweisen:
217
+
=======
218
+
alert(age); // shows "undefined"
219
+
```
220
+
221
+
Technically, it is possible to explicitly assign `undefined` to a variable:
222
+
>>>>>>> cd2c7ce3c8f033e6f7861ed1b126552e41ba3e31
183
223
184
224
```js run
185
-
letx=123;
225
+
let age = 100;
186
226
187
-
x =undefined;
227
+
// change the value to undefined
228
+
age = undefined;
188
229
189
-
alert(x); // "undefined"
230
+
alert(age); // "undefined"
190
231
```
191
232
233
+
<<<<<<<HEAD
192
234
...Aber wir empfehlen das nicht. Normalerweise verwenden wir `null`, um einer Variablen einen "leeren" oder "unbekannten" Wert zuzuweisen, und `undefined`, um zu überprüfen, ob eine Variable zugewiesen wurde.
235
+
=======
236
+
...But we don't recommend doing that. Normally, one uses `null` to assign an "empty" or "unknown" value to a variable, while `undefined` is reserved as a default initial value for unassigned things.
237
+
>>>>>>> cd2c7ce3c8f033e6f7861ed1b126552e41ba3e31
193
238
194
239
## Objekte und Symbole
195
240
196
241
Der Typ `object` ist etwas Besonderes.
197
242
243
+
<<<<<<< HEAD
198
244
Alle anderen Typen werden als "primitive" (skalare) Datentypen bezeichnet, da ihre Werte nur ein einzelnes Element enthalten können (sei es eine Zeichenfolge oder eine Zahl oder was auch immer). Im Gegensatz dazu werden Objekte zum Speichern von Datensammlungen und komplexeren Einheiten verwendet. Wir werden später im Kapitel <info:object> darauf eingehen, nachdem wir mehr über skalare Datentypen erfahren haben.
199
245
200
246
Der Typ `symbol` wird verwendet, um eindeutige Bezeichner für Objekte zu erstellen. Der Vollständigkeit halber erwähnen wir es hier, aber wir werden ihn nach den Objekten untersuchen.
247
+
=======
248
+
All other types are called "primitive" because their values can contain only a single thing (be it a string or a number or whatever). In contrast, objects are used to store collections of data and more complex entities.
249
+
250
+
Being that important, objects deserve a special treatment. We'll deal with them later in the chapter <info:object>, after we learn more about primitives.
251
+
252
+
The `symbol` type is used to create unique identifiers forobjects. We have to mention it here for the sake of completeness, but also postpone the details till we know objects.
Die letzten drei Zeilen bedürfen möglicherweise einer zusätzlichen Erläuterung:
242
295
296
+
<<<<<<<HEAD
243
297
1.`Math` ist ein eingebautes Objekt, das mathematische Operationen liefert. Wir werden es im Kapitel <info:number>lernen. Hier dient es nur als Beispiel für ein Objekt.
244
298
2. Das Ergebnis von `typeof null` ist `"object"`. Das ist falsch. Es ist ein offiziell anerkannter Fehler, der aus Kompatibilitätsgründen erhalten wurde. Natürlich ist `null` kein Objekt. Es ist ein besonderer Wert mit einem eigenen Typ. Also, nochmal, es ist ein Fehler der Sprache.
245
299
3. Das Ergebnis von `typeof alert` ist `"function"`, da `alert` eine Funktion ist. Wir werden Funktionen in den nächsten Kapiteln untersuchen, in denen wir auch feststellen werden, dass es in JavaScript keinen speziellen "Funktionstyp"gibt. Funktionen gehören zum Objekttyp. Aber`typeof` behandelt sie anders und gibt `"function"` zurück. Das ist nicht ganz richtig, aber in der Praxis sehr nützlich.
300
+
=======
301
+
1.`Math` is a built-in object that provides mathematical operations. We will learn it in the chapter <info:number>. Here, it serves just as an example of an object.
302
+
2. The result of`typeof null` is `"object"`. That's an officially recognized error in `typeof` behavior, coming from the early days of JavaScript and kept for compatibility. Definitely, `null` is not an object. It is a special value with a separate type of its own.
303
+
3. The result of `typeof alert` is `"function"`, because `alert` is a function. We'll study functions in the next chapters where we'll also see that there's no special "function" type inJavaScript. Functions belong to the object type. But`typeof` treats them differently, returning `"function"`. That also comes from the early days ofJavaScript. Technically, such behavior isn't correct, but can be convenient in practice.
304
+
>>>>>>> cd2c7ce3c8f033e6f7861ed1b126552e41ba3e31
246
305
247
306
## Zusammenfassung
248
307
249
308
Es gibt 8 grundlegende Datentypen in JavaScript.
250
309
310
+
<<<<<<< HEAD
251
311
- `number` für Zahlen jeglicher Art: Ganzzahl oder Gleitkommazahl, ganze Zahlen werden begrenzt durch ±2<sup>53</sup>.
252
312
- `bigint` steht für ganzzahlige Zahlen beliebiger Länge.
253
313
- `string` für Zeichenketten. Eine String kann aus einem oder mehreren Zeichen bestehen. Es gibt keine separaten Einzelzeichen.
@@ -256,6 +316,16 @@ Es gibt 8 grundlegende Datentypen in JavaScript.
256
316
- `undefined` für nicht zugewiesene Werte -- ein eigenständiger Typ mit einem einzelnen Wert `undefined`.
257
317
- `object` für komplexere Datenstrukturen.
258
318
- `symbol` für eindeutige Kennungen.
319
+
=======
320
+
- `number` for numbers of any kind: integer or floating-point, integers are limited by ±2<sup>53</sup>.
321
+
- `bigint` is for integer numbers of arbitrary length.
322
+
- `string` for strings. A string may have zero or more characters, there's no separate single-character type.
323
+
-`boolean`for`true`/`false`.
324
+
-`null`for unknown values -- a standalone type that has a single value `null`.
325
+
-`undefined`for unassigned values -- a standalone type that has a single value `undefined`.
326
+
-`object`for more complex data structures.
327
+
-`symbol`for unique identifiers.
328
+
>>>>>>> cd2c7ce3c8f033e6f7861ed1b126552e41ba3e31
259
329
260
330
Mit dem Operator `typeof` können wir sehen, welcher Typ in einer Variablen gespeichert ist.
In diesem Teil des Tutorials behandeln wir die JavaScript-Sprache "als solche", ohne umgebungsspezifische Anpassungen.
4
5
5
6
Aber wir verwenden immer noch den Browser als Demoumgebung, also sollten wir zumindest einige seiner Funktionen der Benutzeroberfläche kennen. In diesem Kapitel machen wir uns mit den Browser-Funktionen `alert` (hinweisen), `prompt` (anfragen) und `confirm` (bestätigen) vertraut.
@@ -13,14 +14,25 @@ alert(message);
13
14
```
14
15
15
16
Dies zeigt eine Meldung `message` an und hält die Ausführung des Skripts an, bis der Benutzer auf "OK" klickt.
17
+
=======
18
+
As we'll be using the browser as our demo environment, let's see a couple of functions to interact with the user: `alert`, `prompt` and `confirm`.
19
+
20
+
## alert
21
+
22
+
This one we've seen already. It shows a message and waits for the user to presses "OK".
Das Minifenster mit der Meldung wird als *modales Fenster* bezeichnet. Das Wort "modal" bedeutet, dass der Besucher nicht mit dem Rest der Seite interagieren kann, keine anderen Knöpfe drücken kann, usw., bis er sich mit dem Fenster beschäftigt hat. In diesem Fall -- bis er auf "OK" drückt.
33
+
=======
34
+
The mini-window with the message is called a *modal window*. The word "modal" means that the visitor can't interact with the rest of the page, press other buttons, etc, until they have dealt with the window. In this case -- until they press "OK".
Der Besucher kann etwas in das Feld tippen und dann auf OK klicken. Oder er beendet die Eingabe, indem er auf Abbrechen klickt oder die `key:Esc` Taste drückt.
55
+
=======
56
+
```smart header="The square brackets in syntax `[...]`"
57
+
The square brackets around `default` in the syntax above denote that the parameter as optional, not required.
58
+
```
59
+
60
+
The visitor can type something in the prompt input field and press OK. Then we get that text in the `result`. Or they can cancel the input by pressing Cancel or hitting the `key:Esc` key, then we get `null` as the `result`.
```smart header="Wir sprechen noch nicht über Objekte"
10
11
In diesem Kapitel werden wir keine Objekte behandeln. Stattdessen werden wir uns zuerst die primitiven Datentypen ansehen. Später, nachdem wir mehr über Objekte gelernt haben, werden wir im Kapitel <info:object-toprimitive> sehen, wie die Objektumwandlung funktioniert.
12
+
=======
13
+
```smart header="Not talking about objects yet"
14
+
In this chapter, we won't cover objects. For now we'll just be talking about primitives.
15
+
16
+
Later, after we learn about objects, in the chapter <info:object-toprimitive> we'll see how objects fit in.
0 commit comments