Skip to content

Commit e5bee7b

Browse files
Add 10 translated questions | Total translated: 70
1 parent a665b9e commit e5bee7b

File tree

1 file changed

+329
-0
lines changed

1 file changed

+329
-0
lines changed

pl-PL/README.md

Lines changed: 329 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1894,5 +1894,334 @@ console.log(admin);
18941894

18951895
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 }`.
18961896

1897+
</p>
1898+
</details>
1899+
1900+
---
1901+
1902+
###### 61. Jaki jest wynik?
1903+
1904+
```javascript
1905+
const person = { name: 'Lydia' };
1906+
1907+
Object.defineProperty(person, 'age', { value: 21 });
1908+
1909+
console.log(person);
1910+
console.log(Object.keys(person));
1911+
```
1912+
1913+
- A: `{ name: "Lydia", age: 21 }`, `["name", "age"]`
1914+
- B: `{ name: "Lydia", age: 21 }`, `["name"]`
1915+
- C: `{ name: "Lydia"}`, `["name", "age"]`
1916+
- D: `{ name: "Lydia"}`, `["age"]`
1917+
1918+
<details><summary><b>Odpowiedź</b></summary>
1919+
<p>
1920+
1921+
#### Odpowiedź: B
1922+
1923+
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.
1926+
1927+
</p>
1928+
</details>
1929+
1930+
---
1931+
1932+
###### 62. Jaki jest wynik?
1933+
1934+
```javascript
1935+
const settings = {
1936+
username: 'lydiahallie',
1937+
level: 19,
1938+
health: 90,
1939+
};
1940+
1941+
const data = JSON.stringify(settings, ['level', 'health']);
1942+
console.log(data);
1943+
```
1944+
1945+
- A: `"{"level":19, "health":90}"`
1946+
- B: `"{"username": "lydiahallie"}"`
1947+
- C: `"["level", "health"]"`
1948+
- D: `"{"username": "lydiahallie", "level":19, "health":90}"`
1949+
1950+
<details><summary><b>Odpowiedź</b></summary>
1951+
<p>
1952+
1953+
#### Odpowiedź: A
1954+
1955+
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+
const increaseNumber = () => num++;
1972+
const increasePassedNumber = number => number++;
1973+
1974+
const num1 = increaseNumber();
1975+
const num2 = 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+
const value = { number: 10 };
2004+
2005+
const multiply = (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+
class Dog {
2073+
constructor(name) {
2074+
this.name = name;
2075+
}
2076+
};
2077+
2078+
class Labrador extends Dog {
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.
2117+
2118+
</p>
2119+
</details>
2120+
2121+
---
2122+
2123+
###### 67. Jaki jest wynik?
2124+
2125+
```javascript
2126+
// index.js
2127+
console.log('running index.js');
2128+
import { sum } from './sum.js';
2129+
console.log(sum(1, 2));
2130+
2131+
// sum.js
2132+
console.log('running sum.js');
2133+
export const sum = (a, b) => a + b;
2134+
```
2135+
2136+
- A: `running index.js`, `running sum.js`, `3`
2137+
- B: `running sum.js`, `running index.js`, `3`
2138+
- C: `running sum.js`, `3`, `running index.js`
2139+
- D: `running index.js`, `undefined`, `running sum.js`
2140+
2141+
<details><summary><b>Odpowiedź</b></summary>
2142+
<p>
2143+
2144+
#### Odpowiedź: B
2145+
2146+
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`.
2175+
2176+
</p>
2177+
</details>
2178+
2179+
---
2180+
2181+
###### 69. Jaki jest wynik?
2182+
2183+
```javascript
2184+
const name = 'Lydia Hallie';
2185+
console.log(name.padStart(13));
2186+
console.log(name.padStart(2));
2187+
```
2188+
2189+
- A: `"Lydia Hallie"`, `"Lydia Hallie"`
2190+
- B: `" Lydia Hallie"`, `" Lydia Hallie"` (`"[13x whitespace]Lydia Hallie"`, `"[2x whitespace]Lydia Hallie"`)
2191+
- C: `" Lydia Hallie"`, `"Lydia Hallie"` (`"[1x whitespace]Lydia Hallie"`, `"Lydia Hallie"`)
2192+
- D: `"Lydia Hallie"`, `"Lyd"`,
2193+
2194+
<details><summary><b>Odpowiedź</b></summary>
2195+
<p>
2196+
2197+
#### Odpowiedź: C
2198+
2199+
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 `"🥑💻"`.
2225+
18972226
</p>
18982227
</details>

0 commit comments

Comments
 (0)