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: pl-PL/README.md
+329Lines changed: 329 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1894,5 +1894,334 @@ console.log(admin);
1894
1894
1895
1895
Możliwe jest łączenie obiektów za pomocą operatora rozprzestrzeniania `...`.Umożliwia on tworzenie kopii par klucz/wartość jednego obiektu i dodawanie ich do innego obiektu. W tym przypadku tworzymy kopie obiektu `user` i dodajemy je do obiektu `admin`. Obiekt `admin` zawiera teraz skopiowane pary klucz/wartość, czego wynikiem jest `{ admin: true, name: "Lydia", age: 21 }`.
Za pomocą metody `defineProperty` możemy dodawać nowe właściwości do obiektu lub modyfikować istniejące. Kiedy dodajemy właściwość do obiektu za pomocą metody `defineProperty`, są one domyślnie _niewyliczalne_. Metoda `Object.keys` zwraca wszystkie _wyliczalne_ nazwy właściwości z obiektu, w tym przypadku tylko `"name"`.
1924
+
1925
+
Właściwości dodane przy użyciu metody `defineProperty` są domyślnie niezmienne. Możesz nadpisać to zachowanie używając właściwości `writable`, `configurable` i `enumerable`. W ten sposób metoda `defineProperty` daje dużo większą kontrolę nad właściwościami dodawanymi do obiektu.
Drugim argumentem `JSON.stringify` jest _replacer_. Zamiennik może być funkcją lub tablicą i pozwala kontrolować, co i w jaki sposób wartości powinny być łańcuchowane.
1956
+
1957
+
Jeśli zamiennik jest _tablicą_, tylko nazwy właściwości zawarte w tablicy zostaną dodane do łańcucha JSON. W tym przypadku tylko właściwości o nazwach `"level"` i `"health"` są uwzględnione, `"username"` jest wykluczone. `data` jest teraz równa `"{"level":19, "health":90}"`.
1958
+
1959
+
Jeśli zamiennik jest _funkcją_, funkcja ta jest wywoływana na każdej właściwości obiektu, który stringujesz. Wartość zwrócona z tej funkcji będzie wartością właściwości, gdy zostanie ona dodana do łańcucha JSON. Jeśli wartość jest `undefined`, właściwość ta zostanie wykluczona z łańcucha JSON.
1960
+
1961
+
</p>
1962
+
</details>
1963
+
1964
+
---
1965
+
1966
+
###### 63. Jaki jest wynik?
1967
+
1968
+
```javascript
1969
+
let num =10;
1970
+
1971
+
constincreaseNumber= () => num++;
1972
+
constincreasePassedNumber=number=> number++;
1973
+
1974
+
constnum1=increaseNumber();
1975
+
constnum2=increasePassedNumber(num1);
1976
+
1977
+
console.log(num1);
1978
+
console.log(num2);
1979
+
```
1980
+
1981
+
- A: `10`, `10`
1982
+
- B: `10`, `11`
1983
+
- C: `11`, `11`
1984
+
- D: `11`, `12`
1985
+
1986
+
<details><summary><b>Odpowiedź</b></summary>
1987
+
<p>
1988
+
1989
+
#### Odpowiedź: A
1990
+
1991
+
Operator jednoargumentowy `++`_najpierw zwraca_ wartość operandu, _potem zwiększa_ wartość operandu. Wartość `num1` to `10`, ponieważ funkcja `increaseNumber` najpierw zwraca wartość `num`, czyli `10`, a dopiero potem zwiększa wartość `num`.
1992
+
1993
+
`num2` jest równe `10`, ponieważ przekazaliśmy `num1` do `increasePassedNumber`.`number` jest równe `10` (wartość `num1`). Ponownie, operator jednoargumentowy `++`_najpierw zwraca_ wartość operandu, _następnie zwiększa_ wartość operandu. Wartość `liczba` wynosi `10`, więc `liczba2` jest równa `10`.
1994
+
1995
+
</p>
1996
+
</details>
1997
+
1998
+
---
1999
+
2000
+
###### 64. Jaki jest wynik?
2001
+
2002
+
```javascript
2003
+
constvalue= { number:10 };
2004
+
2005
+
constmultiply= (x= { ...value }) => {
2006
+
console.log((x.number*=2));
2007
+
};
2008
+
2009
+
multiply();
2010
+
multiply();
2011
+
multiply(value);
2012
+
multiply(value);
2013
+
```
2014
+
2015
+
- A: `20`, `40`, `80`, `160`
2016
+
- B: `20`, `40`, `20`, `40`
2017
+
- C: `20`, `20`, `20`, `40`
2018
+
- D: `NaN`, `NaN`, `20`, `40`
2019
+
2020
+
<details><summary><b>Odpowiedź</b></summary>
2021
+
<p>
2022
+
2023
+
#### Odpowiedź: C
2024
+
2025
+
W ES6 możemy inicjować parametry z wartością domyślną. Wartość parametru będzie wartością domyślną, jeśli żadna inna wartość nie została przekazana do funkcji lub jeśli wartość parametru jest `"undefined". W tym przypadku, rozkładamy właściwości obiektu `value` na nowy obiekt, więc `x` ma domyślną wartość `{ number: 10 }`.
2026
+
2027
+
Domyślny argument jest obliczany w _call time_! Za każdym razem, gdy wywołujemy funkcję, tworzony jest _nowy_ obiekt. Wywołujemy funkcję `multiply` dwa pierwsze razy bez przekazywania wartości: `x` ma wartość domyślną `{ number: 10 }`. Następnie rejestrujemy pomnożoną wartość tej liczby, która wynosi `20`.
2028
+
2029
+
Za trzecim razem, gdy wywołujemy multiply, przekazujemy argument: obiekt o nazwie `value`. Operator `*=` jest w rzeczywistości skrótem od `x.number = x.number * 2`: modyfikujemy wartość `x.number` i rejestrujemy pomnożoną wartość `20`.
2030
+
2031
+
Za czwartym razem ponownie przekazujemy obiekt `value`. `x.number` zostało wcześniej zmodyfikowane do `20`, więc `x.number *= 2` loguje `40`.
2032
+
2033
+
</p>
2034
+
</details>
2035
+
2036
+
---
2037
+
2038
+
###### 65. Jaki jest wynik?
2039
+
2040
+
```javascript
2041
+
[1, 2, 3, 4].reduce((x, y) =>console.log(x, y));
2042
+
```
2043
+
2044
+
- A: `1``2` and `3``3` and `6``4`
2045
+
- B: `1``2` and `2``3` and `3``4`
2046
+
- C: `1``undefined` and `2``undefined` and `3``undefined` and `4``undefined`
2047
+
- D: `1``2` and `undefined``3` and `undefined``4`
2048
+
2049
+
<details><summary><b>Odpowiedź</b></summary>
2050
+
<p>s
2051
+
2052
+
#### Odpowiedź: D
2053
+
2054
+
Pierwszym argumentem, który otrzymuje metoda `reduce` jest _accumulator_, w tym przypadku `x`. Drugim argumentem jest _bieżąca wartość_, `y`. Za pomocą metody reduce wykonujemy funkcję wywołania zwrotnego na każdym elemencie tablicy, co ostatecznie może skutkować jedną wartością. W tym przykładzie nie zwracamy żadnych wartości, po prostu rejestrujemy wartości akumulatora i wartości bieżącej.
2055
+
2056
+
Wartość akumulatora jest równa poprzednio zwróconej wartości funkcji zwrotnej. Jeśli nie przekażesz opcjonalnego argumentu `initialValue` do metody `reduce`, akumulator jest równy pierwszemu elementowi przy pierwszym wywołaniu.
2057
+
2058
+
Przy pierwszym wywołaniu, wartość akumulatora (`x`) wynosi `1`, a wartość bieżąca (`y`) wynosi `2`. Nie wracamy z funkcji zwrotnej, rejestrujemy akumulator i bieżącą wartość: `1` i `2` są rejestrowane.
2059
+
2060
+
Jeśli nie zwrócisz wartości z funkcji, zwróci ona `undefined`. Przy następnym wywołaniu, akumulatorem jest `undefined`, a bieżącą wartością jest `3`. `undefined` i `3` są rejestrowane.
2061
+
2062
+
Przy czwartym wywołaniu ponownie nie wracamy z funkcji zwrotnej. Akumulator jest ponownie `undefined`, a aktualna wartość to `4`. `undefined` i `4` są rejestrowane.
2063
+
2064
+
</p>
2065
+
</details>
2066
+
2067
+
---
2068
+
2069
+
###### 66. Za pomocą którego konstruktora możemy z powodzeniem rozszerzyć klasę `Dog`?
2070
+
2071
+
```javascript
2072
+
classDog {
2073
+
constructor(name) {
2074
+
this.name= name;
2075
+
}
2076
+
};
2077
+
2078
+
classLabradorextendsDog {
2079
+
// 1
2080
+
constructor(name, size) {
2081
+
this.size= size;
2082
+
}
2083
+
// 2
2084
+
constructor(name, size) {
2085
+
super(name);
2086
+
this.size= size;
2087
+
}
2088
+
// 3
2089
+
constructor(size) {
2090
+
super(name);
2091
+
this.size= size;
2092
+
}
2093
+
// 4
2094
+
constructor(name, size) {
2095
+
this.name= name;
2096
+
this.size= size;
2097
+
}
2098
+
2099
+
};
2100
+
```
2101
+
2102
+
- A: 1
2103
+
- B: 2
2104
+
- C: 3
2105
+
- D: 4
2106
+
2107
+
<details><summary><b>Odpowiedź</b></summary>
2108
+
<p>
2109
+
2110
+
#### Odpowiedź: B
2111
+
2112
+
W klasie pochodnej nie można uzyskać dostępu do słowa kluczowego `this` przed wywołaniem `super`. Jeśli spróbujesz to zrobić, zostanie wyświetlony ReferenceError: 1 i 4 wyrzuci błąd referencji.
2113
+
2114
+
Za pomocą słowa kluczowego `super` wywołujemy konstruktor klasy nadrzędnej z podanymi argumentami. Konstruktor rodzica otrzymuje argument `name`, więc musimy przekazać `name` do `super`.
2115
+
2116
+
Klasa `Labrador` otrzymuje dwa argumenty, `name` ponieważ rozszerza klasę `Dog`, oraz `size` jako dodatkową właściwość klasy `Labrador`. Oba muszą być przekazane do funkcji konstruktora na `Labrador`, co jest zrobione poprawnie przy użyciu konstruktora 2.
Ze słowem kluczowym `import`, wszystkie zaimportowane moduły są _pre-parsed_. Oznacza to, że zaimportowane moduły są uruchamiane _najpierw_, a kod w pliku, który importuje moduł jest wykonywany _potem_.
2147
+
2148
+
Jest to różnica pomiędzy `require()` w CommonJS i `import`!
2149
+
Dzięki `require()` można ładować zależności na żądanie podczas wykonywania kodu. Jeśli użylibyśmy `require` zamiast `import`, w konsoli zostałoby wyświetlone `running index.js`, `running sum.js`, `3`.
2150
+
2151
+
</p>
2152
+
</details>
2153
+
2154
+
---
2155
+
2156
+
###### 68. Jaki jest wynik?
2157
+
2158
+
```javascript
2159
+
console.log(Number(2) ===Number(2));
2160
+
console.log(Boolean(false) ===Boolean(false));
2161
+
console.log(Symbol('foo') ===Symbol('foo'));
2162
+
```
2163
+
2164
+
- A: `true`, `true`, `false`
2165
+
- B: `false`, `true`, `false`
2166
+
- C: `true`, `false`, `true`
2167
+
- D: `true`, `true`, `true`
2168
+
2169
+
<details><summary><b>Odpowiedź</b></summary>
2170
+
<p>
2171
+
2172
+
#### Odpowiedź: A
2173
+
2174
+
Każdy Symbol jest całkowicie unikalny. Celem argumentu przekazywanego do Symbolu jest nadanie Symbolowi opisu. Wartość Symbolu nie zależy od przekazanego argumentu. Testując równość, tworzymy dwa zupełnie nowe symbole: pierwszy `Symbol('foo')` i drugi `Symbol('foo')`. Te dwie wartości są unikalne i nie są sobie równe, `Symbol('foo') == Symbol('foo')` zwraca `false`.
Za pomocą metody `padStart` możemy dodać dopełnienie na początku ciągu znaków. Wartością przekazywaną do tej metody jest _całkowita_ długość łańcucha wraz z dopełnieniem. Ciąg `"Lydia Hallie"` ma długość `12`. Metoda `name.padStart(13)` wstawia 1 spację na początku łańcucha, ponieważ 12 + 1 to 13.
2200
+
2201
+
Jeśli argument przekazany do metody `padStart` jest mniejszy niż długość tablicy, dopełnienie nie zostanie dodane.
2202
+
2203
+
</p>
2204
+
</details>
2205
+
2206
+
---
2207
+
2208
+
###### 70. Jaki jest wynik?
2209
+
2210
+
```javascript
2211
+
console.log('🥑'+'💻');
2212
+
```
2213
+
2214
+
- A: `"🥑💻"`
2215
+
- B: `257548`
2216
+
- C: A string containing their code points
2217
+
- D: Error
2218
+
2219
+
<details><summary><b>Odpowiedź</b></summary>
2220
+
<p>
2221
+
2222
+
#### Odpowiedź: A
2223
+
2224
+
Za pomocą operatora `+` można łączyć ciągi znaków. W tym przypadku łączymy ciąg `"🥑"` z ciągiem `"💻"`, otrzymując `"🥑💻"`.
0 commit comments