From a065e04d529da1d847b5062a12c46d916408bf32 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 21:46:22 -0500 Subject: update based on https://github.com/mdn/yari/issues/2028 --- .../operators/array_comprehensions/index.html | 200 --------------------- .../operators/expression_closures/index.html | 76 -------- .../operators/generator_comprehensions/index.html | 172 ------------------ 3 files changed, 448 deletions(-) delete mode 100644 files/de/web/javascript/reference/operators/array_comprehensions/index.html delete mode 100644 files/de/web/javascript/reference/operators/expression_closures/index.html delete mode 100644 files/de/web/javascript/reference/operators/generator_comprehensions/index.html (limited to 'files/de/web/javascript/reference/operators') diff --git a/files/de/web/javascript/reference/operators/array_comprehensions/index.html b/files/de/web/javascript/reference/operators/array_comprehensions/index.html deleted file mode 100644 index a7d34cc1ea..0000000000 --- a/files/de/web/javascript/reference/operators/array_comprehensions/index.html +++ /dev/null @@ -1,200 +0,0 @@ ---- -title: Array Comprehensions -slug: Web/JavaScript/Reference/Operators/Array_comprehensions -tags: - - JavaScript - - Non-standard - - Operator - - Reference -translation_of: Archive/Web/JavaScript/Array_comprehensions ---- -
Nicht standardisiert. Nicht einsetzen!
-Die Array Comprehensions Syntax ist nicht Standardisiert und wurde mit Firefox 58 entfernt. Zukünftig müssen {{jsxref("Array.prototype.map")}}, {{jsxref("Array.prototype.filter")}}, {{jsxref("Functions/Arrow_functions", "Pfeilfunktionen", "", 1)}}, und {{jsxref("Operators/Spread_operator", "Spread Syntax", "", 1)}} eingesetzt werden.
- -
{{jsSidebar("Operators")}}
- -

Die Array Comprehensions Syntax war ein JavaScript Ausdruck, welcher es erlaubt schnell ein neues Array auf Basis eines existierenden zu erstellen. Jedoch wurde diese vom Standard und der Firefox Implementierung entfernt. Nicht mehr einsetzen!

- -

Syntax

- -
[for (x of iterable) x]
-[for (x of iterable) if (condition) x]
-[for (x of iterable) for (y of iterable) x + y]
-
- -

Beschreibung

- -

In Array Comprehensions können zwei Arten von Komponenten eingesetzt werden:

- - - -

Der for-of Iterator ist immer die erste Komponente. Mehrere for-of Iteratoren oder if Statements sind erlaubt.

- -

Array Comprehension wurden zuvor für den ECMAScript 2016 Standard vorgeschlagen und ist eine nützliche Kurzform zum Erstellen von neuen Arrays auf Basis des Inhalts andere.Comprehensions können oft statt den Aufrufen {{jsxref("Array.prototype.map", "map()")}} und {{jsxref("Array.prototype.filter", "filter()")}} eingesetzt werden oder als Möglichkeit beide zu kombinieren.

- -

Die folgende Comprehension nimmt ein Array von Zahlen und erstellt ein neues Array, dass das Doppelte jeder Zahl enthält.

- -
var numbers = [1, 2, 3, 4];
-var doubled = [for (i of numbers) i * 2];
-console.log(doubled); // logs 2,4,6,8
-
- -

Das ist äquivalent zu der folgenden {{jsxref("Array.prototype.map", "map()")}} Operation:

- -
var doubled = numbers.map(i => i * 2);
-
- -

Comprehensions können ebenfalls für das suchen bestimmter Elemente eingesetzt werden. Hier ist eine Comprehension welche nur gerade Zahlen auswählt:

- -
var numbers = [1, 2, 3, 21, 22, 30];
-var evens = [for (i of numbers) if (i % 2 === 0) i];
-console.log(evens); // logs 2,22,30
-
- -

{{jsxref("Array.prototype.filter", "filter()")}} kann mit dem gleichen Ergebnis benutzt werden:

- -
var evens = numbers.filter(i => i % 2 === 0);
-
- -

{{jsxref("Array.prototype.map", "map()")}} und {{jsxref("Array.prototype.filter", "filter()")}} Operation können in einer einzigen Array Comprehension kombiniert werden. Hier ist ein Beispiel, welches auf gerade Zahlen filtert und diese dann verdopelt:

- -
var numbers = [1, 2, 3, 21, 22, 30];
-var doubledEvens = [for (i of numbers) if (i % 2 === 0) i * 2];
-console.log(doubledEvens); // logs 4,44,60
-
- -

Die eckigen Klammern einer Array Comprehension führen einen impliziten Block für Gültigkeitsbereiche ein. Neue Variablen (wie i im Beispiel) werden so behandelt, als währen sie mit {{jsxref("Statements/let","let")}} deklariert. Das bedeutet, dass sie nicht außerhalb der Comprehension sichtbar sind.

- -

Der Input einer Array Comprehension muss nicht selbst ein Array sein; Iteratoren und Generatoren könne ebenfalls benutzt werden.

- -

Auch Strings können als Input genutzt werden;

- -

Even strings may be used as input; um die Filter- und Map-Aktionen (unter Array-ähnlichen Objekten) oben zu erreichen:

- -
var str = 'abcdef';
-var consonantsOnlyStr = [for (c of str) if (!(/[aeiouAEIOU]/).test(c)) c].join(''); // 'bcdf'
-var interpolatedZeros = [for (c of str) c + '0' ].join(''); // 'a0b0c0d0e0f0'
-
- -

Auch hier wird das Eingabeformat nicht beibehalten, so dass man {{jsxref("Array.prototype.join", "join()")}} benutzen muss, um wieder einen String zu bekommen.

- -

Beispiele

- -

Einfache Array Comprehensions

- -
[for (i of [1, 2, 3]) i * i ];
-// [1, 4, 9]
-
-var abc = ['A', 'B', 'C'];
-[for (letters of abc) letters.toLowerCase()];
-// ["a", "b", "c"]
- -

Array Comprehensions mit if Statement

- -
var years = [1954, 1974, 1990, 2006, 2010, 2014];
-[for (year of years) if (year > 2000) year];
-// [2006, 2010, 2014]
-[for (year of years) if (year > 2000) if (year < 2010) year];
-// [2006], the same as below:
-[for (year of years) if (year > 2000 && year < 2010) year];
-// [2006]
-
- -

Array Comprehensions verglichen zu map und filter

- -

Ein einfacher Weg um Generator Comprehension Syntax zu verstehen ist es sie mit den Array {{jsxref("Array.map", "map")}} und {{jsxref("Array.filter", "filter")}} Methoden zu vergleichen:

- -
var numbers = [1, 2, 3];
-
-numbers.map(function (i) { return i * i });
-numbers.map(i => i * i);
-[for (i of numbers) i * i];
-// all are [1, 4, 9]
-
-numbers.filter(function (i) { return i < 3 });
-numbers.filter(i => i < 3);
-[for (i of numbers) if (i < 3) i];
-// all are [1, 2]
-
- -

Array Comprehensions mit zwei Arrays

- -

Einsatz von zwei for-of Iteratoren, um mit Arrays zu arbeiten:

- -
var numbers = [1, 2, 3];
-var letters = ['a', 'b', 'c'];
-
-var cross = [for (i of numbers) for (j of letters) i + j];
-// ["1a", "1b", "1c", "2a", "2b", "2c", "3a", "3b", "3c"]
-
-var grid = [for (i of numbers) [for (j of letters) i + j]];
-// [
-//  ["1a", "1b", "1c"],
-//  ["2a", "2b", "2c"],
-//  ["3a", "3b", "3c"]
-// ]
-
-[for (i of numbers) if (i > 1) for (j of letters) if(j > 'a') i + j]
-// ["2b", "2c", "3b", "3c"], the same as below:
-
-[for (i of numbers) for (j of letters) if (i > 1) if(j > 'a') i + j]
-// ["2b", "2c", "3b", "3c"]
-
-[for (i of numbers) if (i > 1) [for (j of letters) if(j > 'a') i + j]]
-// [["2b", "2c"], ["3b", "3c"]], not the same as below:
-
-[for (i of numbers) [for (j of letters) if (i > 1) if(j > 'a') i + j]]
-// [[], ["2b", "2c"], ["3b", "3c"]]
-
- -

Spezifikationen

- -

War initial im ECMAScript 2015 Entwurf, wurde jedoch in der Überarbeitung 27 (August 2014) entfernt. Für Spezifikationssemantik muss in älteren Überarbeitungen von ES2015 nachgeschaut werden.

- -

Browserkompatibilität

- - - -

{{Compat("javascript.operators.array_comprehensions")}}

- -

Unterschiede zu den älteren JS1.7/JS1.8 Comprehensions

- -
JS1.7/JS1.8 Comprehensions wurden von Gecko 46 entfernt ({{bug(1220564)}}).
- -

Alte Comprehensions Syntax (nicht mehr benutzen!):

- -
[X for (Y in Z)]
-[X for each (Y in Z)]
-[X for (Y of Z)]
-
- -

Unterschiede:

- - - -

Siehe Bug 1220564, Kommentar 42 für Vorschläge zum Aktualisieren von Code.

- -

Siehe auch

- - diff --git a/files/de/web/javascript/reference/operators/expression_closures/index.html b/files/de/web/javascript/reference/operators/expression_closures/index.html deleted file mode 100644 index 16bda73cd4..0000000000 --- a/files/de/web/javascript/reference/operators/expression_closures/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Ausdrucks Closures -slug: Web/JavaScript/Reference/Operators/Expression_closures -tags: - - Functions - - JavaScript - - Reference -translation_of: Archive/Web/JavaScript/Expression_closures ---- -
Nicht Standardisiert. Nicht benutzen!
-Die Ausdrucks Closure-Syntax ist eine veraltete Firefox spezifische Funktion und wurde mit Firefox 60 entfernt. In Zukunft sollten Pfeilfunktionen genutzt werden.
- -
{{jsSidebar("Operators")}}
- -

Ausdrucks Closures sind eine kurze Funktionssyntax für das Schreiben einfacher Funktionen.

- -

Syntax

- -
function [name]([param1[, param2[, ..., paramN]]])
-   expression
-
- -

Parameter

- -
-
name
-
Der Funktionsname. Kann bei anonymen Funktionen weggelassen werden. Der Name ist nur lokal im Funktionskörper verfügbar.
-
paramN
-
Der Name eines Arguments, welcher der Funktion übergeben wird. Eine Funktion kann bis zu 255 Argumente haben.
-
expression
-
Der Ausdruck, welcher den Funktionskörper einer Funktion bildet.
-
- -

Beschreibung

- -

Diese Funktion ist nicht mehr als eine eine Kurzschreibweise für einfache Funktionen, die der Sprache einer typischen Lambda Notation ähnelt.

- -

JavaScript 1.7 und älter:

- -
function(x) { return x * x; }
- -

JavaScript 1.8:

- -
function(x) x * x
- -

Die Syntax erlaubt es die Klammern und das 'return' Statement wegzulassen - sie sind implizit. Es gibt keine weiteren Vorteile, wenn man den Code so schreibt, außer dass es kürzer ist.

- -

Beispiele

- -

Eine Kurzschreibweise für Eventlistener:

- -
 document.addEventListener('click', function() false, true);
-
- -

Einsatz dieser Notation mit der Array Funktion some aus JavaScript 1.6:

- -
elems.some(function(elem) elem.type == 'text');
-
- -

Browserkompatibilität

- - - -

{{Compat("javascript.operators.expression_closures")}}

- -

Siehe auch

- - diff --git a/files/de/web/javascript/reference/operators/generator_comprehensions/index.html b/files/de/web/javascript/reference/operators/generator_comprehensions/index.html deleted file mode 100644 index 843865b399..0000000000 --- a/files/de/web/javascript/reference/operators/generator_comprehensions/index.html +++ /dev/null @@ -1,172 +0,0 @@ ---- -title: Generator Comprehensions -slug: Web/JavaScript/Reference/Operators/Generator_comprehensions -tags: - - Iterator - - JavaScript - - Non-standard - - Reference -translation_of: Archive/Web/JavaScript/Generator_comprehensions ---- -
Non standardisiert. Nicht einsetzen!
-Die Generator Comprehensions Syntax ist nicht standardisiert und wurde mit Firefox 58 entfernt. Zukünftig sollte stattdessen {{jsxref("Statements/function*", "Generatoren", "", 1)}} eingesetzt werden.
- -
{{jsSidebar("Operators")}}
- -

Die Generator Comprehensions Syntax war ein JavaScript Ausdruck welcher es erlaubt schnell einen neuen Generator auf Basis eines existierenden Iterable Objektes zu erstellen. Jedoch wurde diese aus dem Standard und der Firefox Implementierung entfernt. Sie soll nicht mehr eingesetzt werden!

- -

Syntax

- -
(for (x of iterable) x)
-(for (x of iterable) if (condition) x)
-(for (x of iterable) for (y of iterable) x + y)
-
- -

Beschreibung

- -

In der Generator Comprehension gibt es zwei erlaubte Arten von Komponenten:

- - - -

Die for-of Iteration ist immer die erste Komponente. Mehrere for-of Iterationen oder if Statements sind erlaubt.

- -

Ein signifikanter Nachteil von {{jsxref("Operators/Array_comprehensions","Array Comprehensions","","true")}} ist, dass diese ein völlig neues Array im Speicher erstellt wird. Wenn der Input für die Comprehension selbst ein kleines Array ist, ist der entstehende Overhead nicht signifikant — aber wenn der Input ein langes Array ist oder ein teurer (oder tatsächlich unendlicher) Generator ist, kann die Erstellung eines neuen Arrays problematisch werden.

- -

Generatoren erlauben das nachträgliche Berechnen von Sequenzen, mit Elementen, die dann Berechnet werden, wenn sie benötigt werden. Generator Comprehensions sind syntaktisch fast identisch zu Array Comprehensions — sie benutzen runde Klammern statt eckigen Klammern — jedoch erstellen sie Generator statt eines Arrays, welcher dann ausgeführt werden kann, wenn es benötigt wird. Man kann diese Funktion als Kurzsyntax für das Erstellen von Generatoren sehen.

- -

Angenommen man hat ein Iterator it welcher über eine große Sequenz von Integers iteriert. Wir wollen einen neuen Iterator erstellen, der über das Doppelte des Integers iteriert. Eine Array Comprehension würde ein volles Array im Speicher erstellen, welches die doppelten Werte enthält:

- -
var doubles = [for (i in it) i * 2];
-
- -

Auf der anderen Seite würde eine Generator Comprehension einen neuen Iterator erstellen, welcher die verdoppelten Werte erste dann erstellt, wenn sie benötigt werden:

- -
var it2 = (for (i in it) i * 2);
-console.log(it2.next()); // The first value from it, doubled
-console.log(it2.next()); // The second value from it, doubled
-
- -

Wenn eine Generator Comprehension als Argument einer Funktion eingesetzt wird, können durch die Funktionsaufrufsklammern die äußeren Klammern weggelassen werden:

- -
var result = doSomething(for (i in it) i * 2);
-
- -

Der signifikante Unterschied zwischen den beiden Beispiel ist beim Einsatz der Generator Comprehension, dass man nur einmal über die ganze Datenstruktur iterieren muss, während bei der Array Comprehension zweimal iteriert werden muss, beim Erstellen und beim eigentlichen Iterieren.

- -

Beispiele

- -

Einfache Generator Comprehensions

- -
(for (i of [1, 2, 3]) i * i );
-// generator function which yields 1, 4, and 9
-
-[...(for (i of [1, 2, 3]) i * i )];
-// [1, 4, 9]
-
-var abc = ['A', 'B', 'C'];
-(for (letters of abc) letters.toLowerCase());
-// generator function which yields "a", "b", and "c"
-
- -

Generator Comprehensions mit if Statement

- -
var years = [1954, 1974, 1990, 2006, 2010, 2014];
-
-(for (year of years) if (year > 2000) year);
-// generator function which yields 2006, 2010, and 2014
-
-(for (year of years) if (year > 2000) if (year < 2010) year);
-// generator function which yields 2006, the same as below:
-
-(for (year of years) if (year > 2000 && year < 2010) year);
-// generator function which yields 2006
-
- -

Generator Comprehensions verglichen mit Generatorfunktionen

- -

Ein einfacher Weg um Generator Comprehension Syntax zu verstehen ist es sie mit Generatorfunktionen zu vergleichen.

- -

Beispiel 1: Einfacher Generator:

- -
var numbers = [1, 2, 3];
-
-// Generator function
-(function*() {
-  for (let i of numbers) {
-    yield i * i;
-  }
-})();
-
-// Generator comprehension
-(for (i of numbers) i * i );
-
-// Result: both return a generator which yields [1, 4, 9]
-
- -

Beispiel 2: Einsatz von if in Generatoren.

- -
var numbers = [1, 2, 3];
-
-// Generator function
-(function*() {
-  for (let i of numbers) {
-    if (i < 3) {
-      yield i * 1;
-    }
-  }
-})();
-
-// Generator comprehension
-(for (i of numbers) if (i < 3) i);
-
-// Result: both return a generator which yields [1, 2]
- -

Spezifikationen

- -

Generator Comprehensions waren initial in dem ECMAScript 2015 Entwurf, jedoch wurden sie in der Überarbeitung 27 (August 2014) entfernt. Für Spezifikationssemantik muss in früheren Überarbeitungen von ES2015 nachgeschaut werden.

- -

Browserkompatibilität

- - - -

{{Compat("javascript.operators.generator_comprehensions")}}

- -

Unterschiede zu den älteren JS1.7/JS1.8 Comprehensions

- -
JS1.7/JS1.8 Comprehensions wurden von Gecko 46 entfernt ({{bug(1220564)}}).
- -

Alte Comprehensions Syntax (nicht mehr benutzen!):

- -
(X for (Y in Z))
-(X for each (Y in Z))
-(X for (Y of Z))
-
- -

Unterschiede:

- - - -

Siehe auch

- - -- cgit v1.2.3-54-g00ecf