Skip to content

Commit 8fbd5e6

Browse files
Merge pull request #53 from javascript-tutorial/sync-cd2c7ce3
Sync with upstream @ cd2c7ce
2 parents e0649a0 + 74ae073 commit 8fbd5e6

File tree

155 files changed

+1765
-946
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

155 files changed

+1765
-946
lines changed

1-js/02-first-steps/01-hello-world/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ Hier ist `/pfad/zum/script.js` ein absoluter Pfad zu dem Skript, aus dem Wurzelv
7878
Außerdem können wir auch eine komplette URL angeben. Beispielsweise:
7979

8080
```html
81-
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.js"></script>
81+
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
8282
```
8383

8484
Um mehrere Skripte einzufügen, nutze Mehrfach-Tags:

1-js/02-first-steps/03-strict-mode/article.md

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ Beispielsweise:
1919
...
2020
```
2121

22-
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-
22+
Bald werden wir Funktionen kennenlernen (eine Möglichkeit, Anweisungen zu gruppieren), also, so viel sei verraten, `"use strict"` kann an den Anfang einer Funktion gestellt werden. Auf diese Weise wird der strikte Modus nur in dieser Funktion aktiviert. Normalerweise wird er aber für das ganze Skript verwendet.
2423

2524
````warn header="Stellen sicher, dass \"use strict\" am Anfang steht"
2625
Stelle sicher, dass `"use strict"` am Anfang deiner Skripte steht, da sonst der strikte Modus möglicherweise nicht aktiv ist.
@@ -47,11 +46,13 @@ Sobald wir in den strikten Modus wechseln, gibt es kein Zurück mehr.
4746
4847
## Browser-Konsole
4948
50-
Wenn du in Zukunft eine Browserkonsole zum Testen von Funktionalitäten verwendest, beachte bitte, dass `use strict` standardmäßig nicht verwendet wird.
49+
Wenn du eine [Entwicklerkonsole](info:devtools) zum Ausführen von Code verwendest, beachte bitte, dass sie standardmäßig nicht `use strict` verwendet.
5150
5251
Manchmal, wenn `use strict` einen Unterschied macht, erhältst du falsche Ergebnisse.
5352
54-
Du kannst versuchen, durch Drücken von `key:Umschalt+Eingabetaste` mehrere Zeilen einzugeben und `use strict` wie folgt an den Anfang zu setzen:
53+
Wie kann man also in der Konsole tatsächlich `use strict` verwenden?
54+
55+
Zuerst kannst du versuchen, mit `key:Umschalt+Eingabe` mehrere Zeilen einzugeben, und oben drauf `use strict` setzen, so wie hier:
5556
5657
```js
5758
'use strict'; <Umschalt+Eingabe für eine neue Zeile>
@@ -61,25 +62,28 @@ Du kannst versuchen, durch Drücken von `key:Umschalt+Eingabetaste` mehrere Zeil
6162

6263
Es funktioniert in den meisten Browsern, wie Firefox und Chrome.
6364

64-
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:
65+
Wenn das nicht der Fall ist, z.B. in einem alten Browser, gibt es einen unsauberen, aber zuverlässigen Weg, um `use strict` sicherzustellen. Ummantel es wie folgt:
6566

6667
```js
6768
(function() {
6869
'use strict';
6970

70-
// ...Dein Code...
71+
// ...your code here...
7172
})()
7273
```
7374

74-
## Immer "use strict" verwenden
75+
## Should we "use strict"?
76+
77+
Die Frage mag offensichtlich klingen, aber dem ist nicht so.
78+
79+
Man könnte empfehlen, Skripte mit `"use strict"` zu beginnen... Aber weißt du, was besser ist?
80+
81+
Modernes JavaScript unterstützt "Klassen" und "Module" - fortgeschrittene Sprachstrukturen (zu denen wir sicher noch kommen werden), die automatisch die `use strict` Verwendung ermöglichen. Wir brauchen also nicht die `"use strict"`-Direktive hinzuzufügen, wenn wir sie verwenden.
7582

76-
Wir müssen die Unterschiede zwischen dem striken Modus und dem "Standardmodus" noch behandeln.
83+
**Also, für den Moment ist `"use strict;"` ein willkommener Gast an der Spitze deiner Skripte. Später, wenn der Code nur noch aus Klassen und Modulen besteht, können wir ihn weglassen.**
7784

78-
In den nächsten Kapiteln werden wir beim Erlernen der Sprachfunktionen die Unterschiede zwischen dem Strikten und dem Standardmodus feststellen. Zum Glück gibt es nicht viele und sie verbessern unser Leben.
85+
Ab jetzt sollten wir über `use strict` im Allgemeinen Bescheid wissen.
7986

80-
Im Moment genügt es, allgemein zu wissen:
87+
In den nächsten Kapiteln werden wir, während wir die sprachlichen Merkmale kennen lernen, die Unterschiede zwischen dem strikten und dem herkömmlichen Modus sehen. Zum Glück gibt es nicht viele, und sie machen uns das Leben tatsächlich angenehmer.
8188

82-
1. Die Anweisung `"use strict"` schaltet die Engine in den "modernen" Modus und ändert das Verhalten einiger eingebauter Funktionen. Wir werden die Details später im Tutorial sehen.
83-
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-
3. Der strikte Modus wird von allen modernen Browsern unterstützt.
85-
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.
89+
Alle Beispiele in diesem Tutorial gehen vom strikten Modus aus, sofern nicht (sehr selten) anders angegeben.

1-js/02-first-steps/05-types/article.md

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
# Datentypen
22

3-
Eine Variable in JavaScript kann beliebige Daten enthalten. Eine Variable kann in einem Moment eine Zeichenkette und in einem anderen eine Zahl sein:
3+
Ein Wert in JavaScript ist immer von einem bestimmten Typ. Zum Beispiel eine Zeichenfolge oder eine Zahl.
4+
5+
Es gibt acht grundlegende Datentypen in JavaScript. Hier werden wir sie allgemein behandeln, und in den nächsten Kapiteln werden wir auf jeden von ihnen im Detail eingehen.
6+
7+
Wir können jeden beliebigen Typ in eine Variable setzen. Zum Beispiel kann eine Variable in einem Moment eine Zeichenfolge sein und dann eine Zahl speichern:
48

59
```js
610
// kein Fehler
711
let message = "Hallo";
812
message = 123456;
913
```
1014

11-
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-
13-
Es gibt acht grundlegende Datentypen in JavaScript. Hier werden wir sie allgemein behandeln und in den nächsten Kapiteln detailliert auf sie eingehen.
15+
Programmiersprachen, die solche Eigenschaften ermöglichen, wie z.B. JavaScript, werden als "dynamisch typisiert" bezeichnet, d.h. es gibt zwar Datentypen, aber die Variablen sind nicht an einen dieser Typen gebunden.
1416

1517
## Number
1618

@@ -64,21 +66,23 @@ Mehr über das Arbeiten mit Zahlen erfahren wir in diesem Kapitel <info:number>.
6466

6567
## BigInt
6668

67-
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.
69+
In JavaScript kann der Typ "Zahl" keine ganzzahligen Werte darstellen, die größer als <code>(2<sup>53</sup>-1)</code> (das ist `9007199254740991`) oder kleiner als <code>-(-2<sup>53</sup>-1)</code> für Negative sind. Es handelt sich um eine technische Einschränkung, die durch ihre interne Darstellung bedingt ist.
70+
71+
Für die meisten Zwecke reicht das völlig aus, aber manchmal brauchen wir wirklich große Zahlen, z.B. für die Kryptographie oder Zeitstempel mit Mikrosekunden-Genauigkeit.
6872

6973
Der Typ `BigInt` wurde kürzlich der Sprache hinzugefügt, um Ganzzahlen beliebiger Länge darzustellen.
7074

71-
Ein `BigInt` wird durch Anhängen von `n` an das Ende einer Ganzzahl erstellt:
75+
Ein `BigInt`-Wert wird durch Anhängen von `n` an das Ende einer Ganzzahl erzeugt:
7276

7377
```js
7478
// Das "n" am Ende bedeutet, dass es ein BigInt ist
7579
const bigInt = 1234567890123456789012345678901234567890n;
7680
```
7781

78-
Da `BigInt`-Zahlen selten benötigt werden, haben wir ihnen ein eigenes Kapitel gewidmet <info:bigint>.
82+
Da `BigInt`-Zahlen selten benötigt werden, behandeln wir sie hier nicht, sondern widmen ihnen ein eigenes Kapitel <info:bigint>. Lies es, wenn du so große Zahlen brauchst.
7983

80-
```smart header="Kompatibilitätsprobleme"
81-
Derzeit wird `BigInt` in Firefox und Chrome unterstützt, nicht jedoch in Safari/IE/Edge.
84+
```smart header="Compatability issues"
85+
Im Moment wird `BigInt` in Firefox/Chrome/Edge unterstützt, aber nicht in Safari/IE.
8286
```
8387

8488
## String
@@ -163,41 +167,43 @@ In JavaScript ist `null` kein "Verweis auf ein nicht vorhandenes Objekt" oder ei
163167

164168
Es ist nur ein spezieller Wert, der "nichts", "leer" oder "Wert unbekannt" darstellt.
165169

166-
Der obige Code besagt, dass `age` aus irgendeinem Grund unbekannt oder leer ist.
170+
Der oben genannte Code besagt, dass `age` unbekannt ist.
167171

168172
## Der Wert "undefined"
169-
170173
Der spezielle Wert `undefined` steht ebenfalls abseits. Er bildet einen eigenen Typ, genau wie `null`.
171174

172175
Die Bedeutung von `undefined` ist "Wert ist nicht zugewiesen".
173176

174177
Wenn eine Variable deklariert, aber nicht zugewiesen ist, ist ihr Wert `undefined`:
175178

176179
```js run
177-
let x;
180+
let age;
178181

179-
alert(x); // zeigt "undefined"
182+
alert(age); // zeigt "undefined"
180183
```
181184

182185
Technisch gesehen ist es möglich, jeder Variablen ein `undefined` zuzuweisen:
183186

184187
```js run
185-
let x = 123;
188+
let age = 100;
186189

187-
x = undefined;
190+
// change the value to undefined
191+
age = undefined;
188192

189-
alert(x); // "undefined"
193+
alert(age); // "undefined"
190194
```
191195

192-
...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.
196+
...Aber wir raten davon ab, das zu tun. Normalerweise verwendet man `null`, um einer Variablen einen "leeren" oder "unbekannten" Wert zuzuweisen, während `undefined` als Standard-Anfangswert für nicht zugewiesene Werte reserviert ist.
193197

194198
## Objekte und Symbole
195199

196200
Der Typ `object` ist etwas Besonderes.
197201

198-
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.
202+
Alle anderen Typen werden als "primitiv" bezeichnet, weil ihre Werte nur eine einzige Sache enthalten können (sei es eine Zeichenfolge oder eine Zahl oder was auch immer). Im Gegensatz dazu werden Objekte zur Speicherung von Datensammlungen und komplexeren Entitäten verwendet.
203+
204+
Da Objekte so wichtig sind, verdienen sie besondere Aufmerksamkeit. Wir werden sie später im Kapitel <info:object> behandeln, nachdem wir mehr über Primitive erfahren haben.
199205

200-
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.
206+
Der Typ `symbol` wird verwendet, um eindeutige Bezeichner für Objekte zu erstellen. Wir müssen es hier der Vollständigkeit halber erwähnen, aber auch die Details aufschieben, bis wir Objekte kennen.
201207

202208
## Der Operator typeof [#type-typeof]
203209

@@ -241,16 +247,16 @@ typeof alert // "function" (3)
241247
Die letzten drei Zeilen bedürfen möglicherweise einer zusätzlichen Erläuterung:
242248

243249
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-
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-
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.
250+
2. Das Ergebnis von `typeof null` ist `"object"`. Das ist ein offiziell anerkannter Fehler im `typeof`-Verhalten, der aus den frühen Tagen von JavaScript stammt und aus Kompatibilitätsgründen beibehalten wurde. Definitiv ist `null` kein Objekt. Es ist ein besonderer Wert mit einem eigenen Typ.
251+
3. Das Ergebnis von `typeof alert` ist `"function"`, denn `alert` ist eine Funktion. Wir werden Funktionen in den nächsten Kapiteln untersuchen, wo wir auch sehen werden, dass es keinen speziellen "Funktionstyp" in JavaScript gibt. Funktionen gehören zum Objekttyp. Aber `typeof` behandelt sie anders und gibt `"function"` zurück. Auch das stammt aus den frühen Tagen von JavaScript. Technisch gesehen ist ein solches Verhalten nicht korrekt, kann aber in der Praxis bequem sein.
246252

247253
## Zusammenfassung
248254

249255
Es gibt 8 grundlegende Datentypen in JavaScript.
250256

251-
- `number` für Zahlen jeglicher Art: Ganzzahl oder Gleitkommazahl, ganze Zahlen werden begrenzt durch ±2<sup>53</sup>.
252-
- `bigint` steht für ganzzahlige Zahlen beliebiger Länge.
253-
- `string` für Zeichenketten. Eine String kann aus einem oder mehreren Zeichen bestehen. Es gibt keine separaten Einzelzeichen.
257+
- `number` für Zahlen jeglicher Art: Ganzzahl oder Gleitkommazahl, ganze Zahlen sind auf ±2<sup>53</sup> begrenzt.
258+
- `bigint` steht für ganze Zahlen beliebiger Länge.
259+
- `string` für Zeichenketten. Eine String kann aus null oder mehreren Zeichen bestehen. Es gibt keine separaten Einzelzeichentyp.
254260
- `boolean` für `true`/`false`.
255261
- `null` für unbekannte Werte -- ein eigenständiger Typ mit einem einzelnen Wert `null`.
256262
- `undefined` für nicht zugewiesene Werte -- ein eigenständiger Typ mit einem einzelnen Wert `undefined`.
File renamed without changes.
File renamed without changes.

1-js/02-first-steps/09-alert-prompt-confirm/article.md renamed to 1-js/02-first-steps/06-alert-prompt-confirm/article.md

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,18 @@
11
# Interaktion: alert, prompt, confirm
22

3-
In diesem Teil des Tutorials behandeln wir die JavaScript-Sprache "als solche", ohne umgebungsspezifische Anpassungen.
4-
5-
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.
3+
Da wir den Browser als unsere Demo-Umgebung verwenden, wollen wir einige Funktionen zur Interaktion mit dem Benutzer betrachten: `alert`, `prompt` und `confirm`.
64

75
## alert
86

9-
Syntax:
10-
11-
```js
12-
alert(message);
13-
```
14-
15-
Dies zeigt eine Meldung `message` an und hält die Ausführung des Skripts an, bis der Benutzer auf "OK" klickt.
7+
Diese haben wir bereits gesehen. Es zeigt eine Meldung an und wartet darauf, dass der Benutzer "OK" drückt.
168

179
Zum Beispiel:
1810

1911
```js run
20-
alert("Hello");
12+
alert("Hallo");
2113
```
2214

23-
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.
15+
Das Mini-Fenster mit der Nachricht wird als *Dialog-Fenster* bezeichnet. Das Wort "Dialog" bedeutet, dass der Besucher erst dann mit dem Rest der Seite interagieren, andere Knöpfe drücken usw. kann, wenn er sich mit dem Fenster beschäftigt hat. In diesem Fall -- bis er "OK" drückt.
2416

2517
## prompt
2618

@@ -38,7 +30,11 @@ Es wir ein modales Fenster mit einer Meldung angezeigt, ein Eingabefeld für den
3830
`default`
3931
: Ein optionaler zweiter Parameter, der vor-befüllte Wert für das Eingabefeld.
4032

41-
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.
33+
```smart header="Eckige Klammer in der Syntax `[...]`"
34+
Die eckigen Klammern um `default` in der obigen Syntax bedeuten, dass der Parameter optional, nicht erforderlich ist.
35+
```
36+
37+
Der Besucher kann etwas in das Eingabefeld eingeben und OK drücken. Dann erhalten wir diesen Text im `Ergebnis`. Oder er kann die Eingabe beenden, indem er Abbrechen drückt oder `key:Esc` drückt, dann erhalten wir `Null` als `Ergebnis`.
4238
4339
Der Aufruf von `prompt` gibt den Text des Eingabefelds zurück. Wenn die Eingabe abgebrochen wurde, so ist der Rückgabewert `null`.
4440
@@ -51,7 +47,7 @@ alert(`Du bist ${age} Jahre alt!`); // Du bist 100 Jahre alt!
5147
```
5248

5349
````warn header="Im IE: stelle immer einen `default` Wert bereit"
54-
Der zweite Parameter ist optional, aber wenn wir ihn nicht angeben, wird Internet Explorer den Text `"undefined"` in die Eingabeaufforderung einfügen.
50+
Der zweite Parameter ist optional, aber wenn wir ihn nicht angeben, wird Internet Explorer den Text `"undefined"` in die Eingabeaufforderung einfügen.
5551

5652
Führe diesen Code im Internet Explorer aus, um es zu sehen:
5753

1-js/02-first-steps/06-type-conversions/article.md renamed to 1-js/02-first-steps/07-type-conversions/article.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ Zum Beispiel wandelt `alert` automatisch jeden Wert in den Datentyp "String" um
66

77
Es gibt auch Fälle, in denen wir einen Wert explizit in den erwarteten Datentyp umwandeln müssen.
88

9-
```smart header="Wir sprechen noch nicht über Objekte"
10-
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.
9+
```smart header="Noch nicht von Objekten sprechen"
10+
In diesem Kapitel werden wir keine Objekte behandeln. Im Moment werden wir nur über Primitive sprechen.
11+
12+
Später, nachdem wir etwas über Objekte gelernt haben, werden wir im Kapitel <info:objekt-toprimitive> sehen, wie Objekte hineinpassen.
1113
```
1214

1315
## String Umwandlung
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)