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: README-de_DE.md
+303
Original file line number
Diff line number
Diff line change
@@ -6,9 +6,12 @@ Von einfach bis fortgeschritten: teste wie gut du JavaScript kennst, frische dei
6
6
7
7
Die Antworten sind unterhalb der Fragen versteckt. Du kannst einfach darauf klicken um die Antworten anzuzeigen. Viel Glück :heart:
8
8
9
+
### Andere verfügbare Sprachen
9
10
[English](./README.md) <br />
10
11
[Bosanski Jezik](./README-bs_BS.md) <br />
11
12
[日本語](./README-ja_JA.md) <br />
13
+
[한국어](./README-ko_KR.md) <br />
14
+
[Português Brasil](./README_pt_BR.md) <br />
12
15
[Русский](./README_ru-RU.md) <br />
13
16
[Українська мова](./README-ua_UA.md) <br />
14
17
[Tiếng Việt](./README-vi.md) <br />
@@ -1653,3 +1656,303 @@ Da wir die Variable `y` aber global erstellt haben ist ihr Wert `10` auch hier v
1653
1656
1654
1657
</p>
1655
1658
</details>
1659
+
1660
+
1661
+
---
1662
+
1663
+
###### 55. Was ist der Output?
1664
+
1665
+
```javascript
1666
+
classDog {
1667
+
constructor(name) {
1668
+
this.name= name;
1669
+
}
1670
+
}
1671
+
1672
+
Dog.prototype.bark=function() {
1673
+
console.log(`Woof I am ${this.name}`);
1674
+
};
1675
+
1676
+
constpet=newDog("Mara");
1677
+
1678
+
pet.bark();
1679
+
1680
+
deleteDog.prototype.bark;
1681
+
1682
+
pet.bark();
1683
+
```
1684
+
1685
+
- A: `"Woof I am Mara"`, `TypeError`
1686
+
- B: `"Woof I am Mara"`,`"Woof I am Mara"`
1687
+
- C: `"Woof I am Mara"`, `undefined`
1688
+
- D: `TypeError`, `TypeError`
1689
+
1690
+
<details><summary><b>Antwort</b></summary>
1691
+
<p>
1692
+
1693
+
#### Antwort: A
1694
+
1695
+
Properties von Objekten können mit dem `delete` Keyword entfernt werden, selbst am Prototype. Beim entfernen von Properties am Prototype ist zu beachten, dass diese dann aus der Prototypen-Kette verschwinden. In unserem Fall existiert die `bark` Funktion nicht mehr am Prototype nachdem `delete Dog.prototype.bark` ausgeführt wurde.
1696
+
1697
+
Wenn wir versuchen etwas auszuführen, was keine Funktion ist, wird ein `TypeError` ausgeworfen. In diesem Fall `TypeError: pet.bark is not a function`, da `pet.bark``undefined` ist.
1698
+
1699
+
</p>
1700
+
</details>
1701
+
1702
+
---
1703
+
1704
+
###### 56. Was ist der Output?
1705
+
1706
+
```javascript
1707
+
constset=newSet([1, 1, 2, 3, 4]);
1708
+
1709
+
console.log(set);
1710
+
```
1711
+
1712
+
- A: `[1, 1, 2, 3, 4]`
1713
+
- B: `[1, 2, 3, 4]`
1714
+
- C: `{1, 1, 2, 3, 4}`
1715
+
- D: `{1, 2, 3, 4}`
1716
+
1717
+
<details><summary><b>Antwort</b></summary>
1718
+
<p>
1719
+
1720
+
#### Antwort: D
1721
+
1722
+
Das `Set` Objekt ist eine Sammlung von _eindeutigen_ Werten: jeder Wert kann nur ein Mal in einem Set vorkommen.
1723
+
1724
+
Wir übergeben `[1, 1, 2, 3, 4]` mit einer doppelten `1`. Da wir keine doppelten Werte in einem Set haben können wird eine `1` entfernt. Das Ergebnis ist `{1, 2, 3, 4}`.
1725
+
1726
+
</p>
1727
+
</details>
1728
+
1729
+
---
1730
+
1731
+
###### 57. Was ist der Output?
1732
+
1733
+
```javascript
1734
+
// counter.js
1735
+
let counter =10;
1736
+
exportdefaultcounter;
1737
+
```
1738
+
1739
+
```javascript
1740
+
// index.js
1741
+
importmyCounterfrom"./counter";
1742
+
1743
+
myCounter +=1;
1744
+
1745
+
console.log(myCounter);
1746
+
```
1747
+
1748
+
- A: `10`
1749
+
- B: `11`
1750
+
- C: `Error`
1751
+
- D: `NaN`
1752
+
1753
+
<details><summary><b>Antwort</b></summary>
1754
+
<p>
1755
+
1756
+
#### Antwort: C
1757
+
1758
+
Ein importiertes Modul ist _read-only_, was bedeutet, dass importierte Module nicht geändert werden können. Nur das Modul, welches diese exportiert kann deren Wert ändern.
1759
+
1760
+
Wenn wir also den Wert von `myCounter` erhöhen bekommen wir den Fehler `myCounter is read-only and cannot be modified`.
1761
+
1762
+
</p>
1763
+
</details>
1764
+
1765
+
---
1766
+
1767
+
###### 58. Was ist der Output?
1768
+
1769
+
```javascript
1770
+
constname="Lydia";
1771
+
age =21;
1772
+
1773
+
console.log(delete name);
1774
+
console.log(delete age);
1775
+
```
1776
+
1777
+
- A: `false`, `true`
1778
+
- B: `"Lydia"`, `21`
1779
+
- C: `true`, `true`
1780
+
- D: `undefined`, `undefined`
1781
+
1782
+
<details><summary><b>Antwort</b></summary>
1783
+
<p>
1784
+
1785
+
#### Antwort: A
1786
+
1787
+
Der `delete` Operator gibt einen Boolean Wert zurück: `true` bei erfolgreichem entfernen, oder andernfalls `false`. Variablen, die mit `var`, `let` oder `const` deklariert werden, können andererseits nicht mit `delete` entfernt werden.
1788
+
1789
+
Der Wert von `name` wurde mit `const` deklariert, weshalb `delete` nicht möglich ist und `false` zurückgegeben wird. Als wir `age` den Wert `21` zugewiesen haben, haben wir eine Property `age` zum globalen Objekt hinzugefügt. Diese Properties kann man mit `delete` entfernen, sodass `delete age``true` zurückgibt.
1790
+
1791
+
</p>
1792
+
</details>
1793
+
1794
+
---
1795
+
1796
+
###### 59. Was ist der Output?
1797
+
1798
+
```javascript
1799
+
constnumbers= [1, 2, 3, 4, 5];
1800
+
const [y] = numbers;
1801
+
1802
+
console.log(y);
1803
+
```
1804
+
1805
+
- A: `[[1, 2, 3, 4, 5]]`
1806
+
- B: `[1, 2, 3, 4, 5]`
1807
+
- C: `1`
1808
+
- D: `[1]`
1809
+
1810
+
<details><summary><b>Antwort</b></summary>
1811
+
<p>
1812
+
1813
+
#### Antwort: C
1814
+
1815
+
Wir können durch Destructuring Werte aus Arrays oder Properties aus Objekten entpacken. Zum Beispiel:
Das bedeutet, dass der Wert von `y` gleich des ersten Wertes im Array ist, sprich der Zahl `1` entspricht. Wenn wir `y` loggen bekommen wir `1` ausgegeben.
Es ist möglich Objekte mit dem Spread Operator `...` zu verbinden. Dieser erstellt Kopien der Key/Value Paare eines Objektes und fügt diese dem anderen Objekt hinzu. In diesem Fall wird eine Kopie des `user` Objekts erstellt und dem `admin` Objekt zugewiesen. Das `admin` Objekt beinhaltet nun die kopierten Key/Value Paare, sodass das Ergebnis `{ admin: true, name: "Lydia", age: 21 }` ist.
Mit der `defineProperty` Methode können wir neue Properties zu einem Objekt hinzufügen oder bestehende modifizieren. Wenn wir mit der `defineProperty` Methode Properties einem Objekt hinzufügen, sind diese standardmäßig _nicht zählbar_. Die `Object.keys` Methode gibt alle _zählbaren_ Property Namen eines Objektes zurück, in diesem Fall nur `"name"`.
1886
+
1887
+
Properties, die mit `defineProperty` erstellt wurden sind standardmäßig unveränderbar. Man kann dieses Verhalten mit den `writable`, `configurable` und `enumerable` Properties verändern. Auf diese Art gibt die `defineProperty` Methode mehr Kontrolle über die Properties, die einem Objekt hinzugefügt werden.
Das zweite Argument von `JSON.stringify` ist ein _Replacer_. Der Replacer kann entweder eine Funktion oder ein Array sein und gibt uns Kontrolle darüber, wie die Werte in Strings umgewandelt werden sollen.
1918
+
1919
+
Wenn der Replacer ein _Array_ ist, werden nur die Properties dem JSON String hinzugefügt, die in dem Array aufgeführt sind. In diesem Fall sind das nur `"level"` und `"health"`. `"username"` ist ausgeschlossen. `data` ist jetzt gleich `"{"level":19, "health":90}"`.
1920
+
1921
+
Wenn der Replacer eine _Funktion_ ist, so wird diese Funktion für jede Property im Objekt aufgerufen, die in Strings umgewandelt wird. Der Wert, den die Funktion zurückgibt, ist der Wert der Property, die dem JSON String hinzugefügt wird. Ist der Wert `undefined`, so wird die Property ausgeschlossen.
1922
+
1923
+
</p>
1924
+
</details>
1925
+
1926
+
---
1927
+
1928
+
###### 63. Was ist der Output?
1929
+
1930
+
```javascript
1931
+
let num =10;
1932
+
1933
+
constincreaseNumber= () => num++;
1934
+
constincreasePassedNumber=number=> number++;
1935
+
1936
+
constnum1=increaseNumber();
1937
+
constnum2=increasePassedNumber(num1);
1938
+
1939
+
console.log(num1);
1940
+
console.log(num2);
1941
+
```
1942
+
1943
+
- A: `10`, `10`
1944
+
- B: `10`, `11`
1945
+
- C: `11`, `11`
1946
+
- D: `11`, `12`
1947
+
1948
+
<details><summary><b>Antwort</b></summary>
1949
+
<p>
1950
+
1951
+
#### Antwort: A
1952
+
1953
+
Der unäre Operator `++`_gibt zuerst_ den Wert des Operanden aus und _erhöht danach_ den Wert des Operanden. Der Wert `num1` ist `10`, da `increaseNumber` zuerst den Wert von `num1` (`10`) ausgibt und ihn danach erhöht.
1954
+
1955
+
`num2` ist gleich `10`, da wir `num1``increasePassedNumber` zugewiesen haben. `number` ist gleich `10` (der Wert von `num1`). Der unäre Operator `++` gibt erneut _zuerst_ den Wert des Operanden aus und _erhöht danach_ den Wert. Der Wert von `number` ist `10`, sodass `num2` ebenfalls `10` ist.
0 commit comments