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/08-operators/article.md
+49-73Lines changed: 49 additions & 73 deletions
Original file line number
Diff line number
Diff line change
@@ -56,31 +56,24 @@ alert( 8 % 3 ); // 2, der Rest von 8 geteilt durch 3
56
56
57
57
### Potenzierung **
58
58
59
-
<<<<<<<HEAD
59
+
60
60
Der Exponentiationsoperator `a ** b` multipliziert `a` mit sich selbst `b` mal.
61
-
=======
62
-
The exponentiation operator `a ** b` raises `a` to the power of`b`.
63
61
64
-
In school maths, we write that as a<sup>b</sup>.
65
-
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
62
+
66
63
67
64
Zum Beispiel:
68
65
69
66
```js run
70
-
<<<<<<< HEAD
67
+
71
68
alert( 2 ** 2 ); // 4 (2 mit sich selbst 2 mal multipliziert)
72
69
alert( 2 ** 3 ); // 8 (2 * 2 * 2, 3 mal)
73
70
alert( 2 ** 4 ); // 16 (2 * 2 * 2 * 2, 4 mal)
74
-
=======
75
-
alert( 2 ** 2 ); // 2² = 4
76
-
alert( 2 ** 3 ); // 2³ = 8
77
-
alert( 2 ** 4 ); // 2⁴ = 16
78
-
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
71
+
79
72
```
80
73
81
-
Just likeinmaths, the exponentiation operator is defined for non-integer numbers as well.
74
+
Genau wieinder Mathematik ist der Potenzierungsoperator auch für nicht-ganzzahlige Zahlen definiert.
82
75
83
-
For example, a square root is an exponentiation by ½:
76
+
Zum Beispiel ist eine Quadratwurzel eine Potenzierung durch ½:
84
77
85
78
```js run
86
79
alert( 4 ** (1/2) ); // 2 (Die Potenz von 1/2 ist gleich der Quadratwurzel)
@@ -118,16 +111,14 @@ Hier ist ein komplexeres Beispiel:
118
111
alert(2 + 2 + '1' ); // "41" und nicht "221"
119
112
```
120
113
121
-
<<<<<<<HEAD
114
+
122
115
Dabei arbeiten die Operatoren einer nach dem anderen. Das erste `+` summiert zwei Zahlen, so dass es `4` zurückgibt, dann fügt das nächste `+` die Zeichenkette `1` hinzu, so dass es `4 + '1' = 41` ergibt.
123
-
=======
124
-
Here, operators work one after another. The first `+` sums two numbers, so it returns `4`, then the next `+` adds the string `1` to it, so it's like `4 + '1' = '41'`.
116
+
125
117
126
118
```js run
127
119
alert('1' + 2 + 2); // "122" and not "14"
128
120
```
129
-
Here, the first operand is a string, the compiler treats the other two operands as strings too. The `2` gets concatenated to `'1'`, so it's like `'1' + 2 = "12"` and `"12" + 2 = "122"`.
130
-
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
121
+
131
122
132
123
Das binäre `+` ist der einzige Operator, der Zeichenketten auf diese Weise unterstützt. Andere arithmetische Operatoren arbeiten nur mit Zahlen und konvertieren ihre Operanden immer in Zahlen.
133
124
@@ -203,16 +194,14 @@ Klammern überschreiben alle Prioritäten. Wenn wir mit der Standardreihenfolge
203
194
204
195
In JavaScript gibt es viele Operatoren. Jeder Operator hat eine entsprechende Vorrangsnummer. Der mit der größeren Nummer wird zuerst ausgeführt. Bei gleicher Rangfolge erfolgt die Ausführung von links nach rechts.
205
196
206
-
<<<<<<<HEAD
197
+
207
198
Hier ist ein Auszug aus der [Ranglistentabelle](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) (Du musst dir das nicht merken, aber beachte, dass unäre Operatoren höher sind als entsprechende binäre):
208
-
=======
209
-
Here's an extract from the [precedence table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) (you don't need to remember this, but note that unary operators are higher than corresponding binary ones):
210
-
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
199
+
211
200
212
201
| Vorrang | Name | Zeichen |
213
202
|------------|------|------|
214
203
|...|...|...|
215
-
<<<<<<<HEAD
204
+
216
205
|17| Unäres Plus |`+`|
217
206
|17| Unäres Minus |`-`|
218
207
|16| Potenzierung |`**`|
@@ -225,28 +214,16 @@ Here's an extract from the [precedence table](https://developer.mozilla.org/en-U
225
214
|...|...|...|
226
215
227
216
Wie wir sehen können, hat das "unäre Plus" eine Priorität von `17`, die höher ist als die `13` der "Addition" (binäres Plus). Deshalb wirken in dem Ausdruck `"+apples + +oranges"` unäre Pluszeichen vor der Addition.
228
-
=======
229
-
|15| unary plus |`+`|
230
-
|15| unary negation |`-`|
231
-
|14| exponentiation |`**`|
232
-
|13| multiplication |`*`|
233
-
|13| division |`/`|
234
-
|12| addition |`+`|
235
-
|12| subtraction |`-`|
236
-
|...|...|...|
237
-
|2| assignment |`=`|
238
-
|...|...|...|
239
217
240
-
As we can see, the "unary plus" has a priority of`15` which is higher than the `12`of"addition" (binary plus). That's why, in the expression `"+apples + +oranges"`, unary pluses work before the addition.
241
-
>>>>>>> 29216730a877be28d0a75a459676db6e7f5c4834
218
+
219
+
242
220
243
221
## Zuweisung
244
222
245
-
<<<<<<< HEAD
246
-
Beachten wir, dass eine Zuweisung `=` auch ein Operator ist. Es ist in der Ranglistentabelle mit der sehr niedrigen Priorität `3` aufgeführt.
247
-
=======
248
-
Let's note that an assignment `=` is also an operator. It is listed in the precedence table with the very low priority of`2`.
249
-
>>>>>>>29216730a877be28d0a75a459676db6e7f5c4834
223
+
224
+
Beachten wir, dass eine Zuweisung `=` auch ein Operator ist. Sie ist in der Ranglistentabelle mit der sehr niedrigen Priorität `3` aufgeführt.
225
+
226
+
250
227
251
228
Wenn wir also eine Variable wie `x = 2 * 2 + 1` zuweisen, werden zuerst die Berechnungen durchgeführt und dann das `=` ausgewertet, wobei das Ergebnis in`x` gespeichert wird.
252
229
@@ -260,11 +237,11 @@ alert( x ); // 5
260
237
261
238
Die Tatsache, dass `=` ein Operator und kein "magisches" Sprachkonstrukt ist, hat eine interessante Implikation.
262
239
263
-
<<<<<<<HEAD
264
-
Die meisten Operatoren in JavaScript geben einen Wert zurück. Das ist bei `+` und `-` offensichtlich, gilt aber auch für `=`.
265
-
=======
266
-
All operators in JavaScript return a value. That's obvious for `+` and `-`, but also true for `=`.
267
-
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
240
+
241
+
Die meisten Operatoren in JavaScript geben einen Wert zurück. Das ist bei `+` und `-` offensichtlich, dies gilt aber auch für `=`.
242
+
243
+
244
+
268
245
269
246
Der Aufruf `x = Wert` schreibt den `Wert`in`x`*und gibt ihn dann zurück*.
270
247
@@ -282,11 +259,11 @@ alert( a ); // 3
282
259
alert( c ); // 0
283
260
```
284
261
285
-
Im obigen Beispiel ist das Ergebnis des Ausdrucks `(a = b + 1)` der Wert, der `a` zugewiesen wurde (d.h. `3`). Es wird dann für weitere Auswertungen verwendet.
262
+
Im obigen Beispiel ist das Ergebnis des Ausdrucks `(a = b + 1)` der Wert, der `a` zugewiesen wurde (d.h. `3`). Dieser Wert wird dann für weitere Auswertungen verwendet.
286
263
287
-
Seltsamer Code, nicht wahr? Wir sollten verstehen, wie er funktioniert, denn manchmal sehen wir ihn in JavaScript-Bibliotheken.
264
+
Seltsamer Code, nicht wahr? Wir sollten uns über seine Funktionalität klar machen, denn Code wie dieser kommtin JavaScript-Bibliotheken vor.
288
265
289
-
Trotzdem, bitte schreibe Code nicht so. Solche Tricks machen Code bestimmt nicht klarer oder leserlicher.
266
+
Dennoch, bitte schreibe keinen Code auf diese Weise. Trickswie diese machen Code weder klarer noch leserlicher.
290
267
291
268
### Verkettung von Zuweisungen
292
269
@@ -306,7 +283,7 @@ alert( c ); // 4
306
283
307
284
Verkettete Zuweisungen werden von rechts nach links ausgewertet. Zuerst wird der ganz rechte Ausdruck `2 + 2` ausgewertet und dann den Variablen auf der linken Seite zugewiesen:`c`, `b` und `a`. Am Ende teilen sich alle Variablen einen einzigen Wert.
308
285
309
-
Noch einmal: Aus Gründen der Lesbarkeit ist es besser, solchen Code in wenige Zeilen aufzuteilen:
286
+
Auch hier gilt: Aufgrund der Lesbarkeit ist es besser, solchen Code in wenige Zeilen aufzuteilen:
310
287
311
288
```js
312
289
c = 2 + 2;
@@ -317,7 +294,7 @@ Das ist leichter zu lesen, besonders wenn man den Code mit den Augen schnell sca
317
294
318
295
## An Ort und Stelle modifizieren
319
296
320
-
Wir müssen oft einen Operator auf eine Variable anwenden und das neue Ergebnis in derselben Variable speichern.
297
+
Häufig müssen wir einen Operator auf eine Variable anwenden und das neue Ergebnis in derselben Variable speichern.
321
298
322
299
Zum Beispiel:
323
300
@@ -327,7 +304,7 @@ n = n + 5;
327
304
n = n * 2;
328
305
```
329
306
330
-
Diese Notation kann mit den Operatoren `+=` und `*=` gekürzt werden:
307
+
Diese Notation kann man mit den Operatoren `+=` und `*=`abkürzen:
331
308
332
309
```js run
333
310
let n = 2;
@@ -339,7 +316,7 @@ alert( n ); // 14
339
316
340
317
Für alle arithmetischen und bitweisen Operatoren gibt es kurze "modifizieren-und-zuweisen"-Operatoren:`/=`, `-=`, usw.
341
318
342
-
Solche Operatoren haben den gleichen Stellenwert wie eine normale Zuweisung, so dass sie nach den anderen Berechnungen durchgeführt werden:
319
+
Solche Operatoren haben den gleichen Stellenwert wie eine normale Zuweisung, sodass sie nach den anderen Berechnungen durchgeführt werden:
343
320
344
321
```js run
345
322
let n = 2;
@@ -385,29 +362,29 @@ Beide Anweisungen tun dasselbe: erhöhen `counter` um `1`.
385
362
386
363
Gibt es da einen Unterschied? Ja, aber wir können es nur sehen, wenn wir den zurückgegebenen Wert von `++/-` verwenden.
387
364
388
-
Lass uns klären. Wie wir wissen, geben alle Operatoren einen Wert zurück. Inkrementieren/Dekrementieren ist keine Ausnahme. Die Präfix-Form gibt den neuen Wert zurück, während die Postfix-Form den alten Wert zurück gibt (vor dem Inkrementieren/Dekrementieren).
365
+
Lass es uns aufklären. Wie wir wissen, geben alle Operatoren einen Wert zurück. Inkrementieren/Dekrementieren ist keine Ausnahme. Die Präfix-Form gibt den neuen Wert zurück, während die Postfix-Form den alten Wert zurück gibt (vor dem Inkrementieren/Dekrementieren).
389
366
390
-
Um den Unterschied zu sehen, hier ein Beispiel:
367
+
Um den Unterschied zu erkennen, hier ein Beispiel:
391
368
392
369
```js run
393
370
let counter = 1;
394
371
let a = ++counter; // (*)
395
372
396
-
alert(a); // *!*2*/!*
373
+
alert(a); // 2
397
374
```
398
375
399
-
In der Zeile `(*)` erhöht die *Präfix*-Form von `++counter` den Wert von `counter` und gibt den neuen Wert `2` zurück. Der`alert`zeigt also `2`.
376
+
In der Zeile `(*)` erhöht die *Präfix*-Form von `++counter` den Wert von `counter` und gibt den neuen Wert `2` zurück. Der `alert` gibt also `2` zurück.
400
377
401
378
Verwenden wir nun die Postfix-Form:
402
379
403
380
```js run
404
381
let counter = 1;
405
382
let a = counter++; // (*) ++counter zu counter++ geändert
406
383
407
-
alert(a); // *!*1*/!*
384
+
alert(a); // 1
408
385
```
409
386
410
-
In der Zeile `(*)` erhöht die *Postfix*-Form `counter++` ebenfalls `counter`, gibt aber den *alten*Wert (vor dem Inkrementieren) zurück. Der`alert`zeigt also `1`.
387
+
In der Zeile `(*)` erhöht die *Postfix*-Form `counter++` ebenfalls den Wert von `counter`, gibt aber den *alten* Wert (vor dem Inkrementieren) zurück. Der `alert` gibt also `1` zurück.
411
388
412
389
Zusammenfassend:
413
390
@@ -419,13 +396,13 @@ Zusammenfassend:
419
396
++counter;
420
397
alert( counter ); // 2, die obigen Zeilen haben dasselbe getan
421
398
```
422
-
- Wenn wir einen Wert erhöhen *und* sofort das Ergebnis des Operators verwenden möchten, benötigen wir die Präfix-Formu:
399
+
- Wenn wir einen Wert erhöhen *und* sofort das Ergebnis des Operators verwenden möchten, benötigen wir die Präfix-Form:
423
400
424
401
```js run
425
402
let counter = 0;
426
403
alert( ++counter ); // 1
427
404
```
428
-
- Wenn wir einen Wert erhöhen, aber seinen vorherigen Wert verwenden möchten, benötigen wir die Postfix-Form:
405
+
- Wenn wir einen Wert erhöhen, aber seinen vorherigen Wert noch verwenden möchten, benötigen wir die Postfix-Form:
429
406
430
407
```js run
431
408
let counter = 0;
@@ -449,7 +426,7 @@ let counter = 1;
449
426
alert( 2 * counter++ ); // 2, weil counter ++ den "alten" Wert zurückgibt
450
427
```
451
428
452
-
Obwohl technisch in Ordnung, macht eine solche Notation Code normalerweise weniger lesbar. Eine Zeile macht mehrere Dinge-- nicht gut.
429
+
Obwohl dies technisch in Ordnung ist, macht eine solche Notation Code normalerweise unlesbarer. Eine Zeile in der mehrere Operationen ausgeführt werden -- nicht gut.
453
430
454
431
Beim Lesen von Code kann ein schneller "vertikaler" Augenscan leicht etwas wie `counter++` übersehen, und es ist nicht offensichtlich, dass die Variable größer wird.
455
432
@@ -478,17 +455,16 @@ Die Liste der Operatoren:
478
455
- Rechtsverschiebung ( `>>` )
479
456
- Null füllende Rechtsverschiebung ( `>>>` )
480
457
481
-
<<<<<<<HEAD
482
-
Diese Operatoren werden sehr selten verwendet, wenn wir mit Zahlen auf der untersten (bitweisen) Ebene herumspielen müssen. Wir werden diese Operatoren in absehbarer Zeit nicht brauchen, da die Webentwicklung kaum Gebrauch von ihnen macht, aber in einigen speziellen Bereichen, wie der Kryptographie, sind sie nützlich. Bei bedarf kannst du den Artikel [Bitweise Operatoren](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Operators/Bitwise_Operatoren) auf MDN lesen.
483
-
=======
484
-
These operators are used very rarely, when we need to fiddle with numbers on the very lowest (bitwise) level. We won't need these operators any time soon, as web development has little use of them, but in some special areas, such as cryptography, they are useful. You can read the [Bitwise Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise) chapter on MDN when a need arises.
485
-
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
458
+
459
+
Diese Operatoren werden sehr selten verwendet, z.B. wenn wir mit Zahlen auf der untersten (bitweisen) Ebene herumspielen müssen. Wir werden diese Operatoren in absehbarer Zeit nicht brauchen, da in der Webentwicklung kaum Gebrauch von ihnen gemacht wird, aber in einigen speziellen Bereichen, wie der Kryptographie, sind sie nützlich. Bei bedarf kannst du den Artikel [Bitweise Operatoren](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Operators/Bitwise_Operatoren) auf MDN lesen.
460
+
461
+
486
462
487
463
## Komma
488
464
489
465
Der Komma-Operator `,` ist einer der seltensten und ungewöhnlichsten Operatoren. Manchmal wird damit kürzerer Code geschrieben, sodass wir ihn kennen müssen, um zu verstehen, was vor sich geht.
490
466
491
-
Mit dem Komma-Operator können wir mehrere Ausdrücke auswerten und durch ein Komma `,` trennen. Jeder von ihnen wird ausgewertet, aber nur das Ergebnis des letzten wird zurückgegeben.
467
+
Mit dem Komma-Operator können wir mehrere Ausdrücke auswerten und sie durch ein Komma `,` trennen. Jeder von ihnen wird ausgewertet, aber nur das Ergebnis des letzten Ausdrucks wird zurückgegeben.
492
468
493
469
Zum Beispiel:
494
470
@@ -503,14 +479,14 @@ alert( a ); // 7 (das Ergebnis von 3 + 4)
503
479
Hier wird der erste Ausdruck `1 + 2` ausgewertet und sein Ergebnis verworfen. Dann wird `3 + 4` ausgewertet und als Ergebnis zurückgegeben.
504
480
505
481
```smart header="Komma hat eine sehr geringe Priorität"
506
-
Bitte beachten Sie, dass der Komma-Operator eine sehr niedrige Priorität hat, niedriger als `=`, daher sind Klammern im obigen Beispiel wichtig.
482
+
Bitte beachte, dass der Komma-Operator eine sehr niedrige Priorität hat, niedriger als `=`, daher sind Klammern im obigen Beispiel wichtig.
507
483
508
-
Ohne sie: `a = 1 + 2, 3 + 4` wertet zuerst `+` aus, summiert die Zahlen zu `a = 3, 7`, dann weist der Zuweisungsoperator `=` `a = 3` zu, und der Rest ist ignoriert. Es ist wie `(a = 1 + 2), 3 + 4`.
484
+
Ohne Klammern: `a = 1 + 2, 3 + 4` wertet zuerst `+` aus, summiert die Zahlen zu `a = 3, 7`, dann weist der Zuweisungsoperator `=` `a = 3` zu, der Rest wird ignoriert. Es ist wie `(a = 1 + 2), 3 + 4`.
509
485
```
510
486
511
-
Warum brauchen wir einen Operator, der alles außer dem letzten Ausdruck wegwirft?
487
+
Wozu brauchen wir einen Operator, der alles außer dem letzten Ausdruck verwirft?
512
488
513
-
Manchmal wird es in komplexeren Konstrukten verwendet, um mehrere Aktionen in eine Zeile zu setzen.
489
+
Manchmal wird der Operator in komplexeren Konstrukten verwendet, um mehrere Aktionen in eine Zeile zu setzen.
514
490
515
491
Zum Beispiel:
516
492
@@ -521,4 +497,4 @@ for (*!*a = 1, b = 3, c = a * b*/!*; a < 10; a++) {
521
497
}
522
498
```
523
499
524
-
Solche Tricks werden in vielen JavaScript-Frameworks verwendet. Deshalb erwähnen wir sie. In der Regel verbessern sie jedoch nicht die Lesbarkeit des Codes, daher sollten wir vor der Verwendung gut überlegen.
500
+
Solche Tricks werden in vielen JavaScript-Frameworks verwendet. Deshalb erwähnen wir sie. In der Regel verbessern sie jedoch nicht die Lesbarkeit des Codes, daher sollten wir uns ihre Verwendung gut überlegen.
0 commit comments