Skip to content

Commit 4e7e32a

Browse files
authored
Merge pull request lydiahallie#136 from oshliaer/russian-updates-06/19
Russian. Updates 06/19
2 parents 9480f05 + ff2c9bf commit 4e7e32a

File tree

1 file changed

+315
-8
lines changed

1 file changed

+315
-8
lines changed

README_ru-RU.md

Lines changed: 315 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,21 @@
66

77
Ответы находятся в свернутой секции ниже вопросов. Просто нажми на "Ответ", чтобы развернуть. Удачи! :heart:
88

9-
[中文版本](./README-zh_CN.md)
10-
[Western Balkan](./README-bs_BS.md)
11-
[Deutsch](./README-de_DE.md)
12-
[Tiếng Việt](./README-vi.md)
13-
[日本語](./README-ja_JA.md)
14-
[Українська мова](./README-ua_UA.md)
9+
10+
Список доступных переводов:
11+
* [English](./README.md)
12+
* [中文版本](./README-zh_CN.md)
13+
* [Versión en español](./README-ES.md)
14+
* [日本語](./README-ja_JA.md)
15+
* [한국어](./README-ko_KR.md)
16+
* [Русский](./README_ru-RU.md)
17+
* [Western Balkan](./README-bs_BS.md)
18+
* [Deutsch](./README-de_DE.md)
19+
* [Tiếng Việt](./README-vi.md)
20+
* [Українська мова](./README-ua_UA.md)
21+
* [Português Brasil](./README_pt_BR.md)
22+
* [العربية](./README_AR.md)
23+
* [اللغة العامية - Egyptian Arabic](./README_ar-EG.md)
1524

1625

1726
---
@@ -1037,7 +1046,6 @@ typeof sayHi();
10371046
Функция `sayHi` возвращает значение, возвращаемое из немедленно вызываемого функционального выражения (IIFE). Результатом является `0` типа `"number"`.
10381047

10391048
Для информации: в JS 7 встроенных типов: `null`, `undefined`, `boolean`, `number`, `string`, `object`, и `symbol`. `"function"` не является отдельным типом, т.к. функции являются объектами типа `"object"`.
1040-
10411049
</p>
10421050
</details>
10431051

@@ -1652,4 +1660,303 @@ let x = y;
16521660
Однако мы создали глобальную переменную `y`, установив `y` равным `10`. Это значение доступно в любом месте нашего кода. `y` определен и содержит значение типа `"number"`. `console.log(typeof y)` возвращает `"number"`.
16531661

16541662
</p>
1655-
</details>
1663+
</details>
1664+
1665+
---
1666+
1667+
###### <a name=20190629> </a>55. Какой будет вывод?
1668+
1669+
```javascript
1670+
class Dog {
1671+
constructor(name) {
1672+
this.name = name;
1673+
}
1674+
}
1675+
1676+
Dog.prototype.bark = function() {
1677+
console.log(`Woof I am ${this.name}`);
1678+
};
1679+
1680+
const pet = new Dog("Mara");
1681+
1682+
pet.bark();
1683+
1684+
delete Dog.prototype.bark;
1685+
1686+
pet.bark();
1687+
```
1688+
1689+
- A: `"Woof I am Mara"`, `TypeError`
1690+
- B: `"Woof I am Mara"`,`"Woof I am Mara"`
1691+
- C: `"Woof I am Mara"`, `undefined`
1692+
- D: `TypeError`, `TypeError`
1693+
1694+
<details><summary><b>Ответ</b></summary>
1695+
<p>
1696+
1697+
#### Ответ: A
1698+
1699+
Мы можем удалить свойства из объектов, используя ключевое слово `delete`, также в прототипе. Удаляя свойство в прототипе, оно больше не доступно в цепочке прототипов. В этом случае функция `bark` больше не доступна в прототипе после`delete Dog.prototype.bark`, но мы все еще пытаемся получить к ней доступ.
1700+
1701+
Когда мы пытаемся вызвать что-то, что не является функцией, выдается `TypeError`. В этом случае `TypeError: pet.bark не является функцией`, поскольку` pet.bark` является `undefined`.
1702+
1703+
</p>
1704+
</details>
1705+
1706+
---
1707+
1708+
###### 56. Какой будет вывод?
1709+
1710+
```javascript
1711+
const set = new Set([1, 1, 2, 3, 4]);
1712+
1713+
console.log(set);
1714+
```
1715+
1716+
- A: `[1, 1, 2, 3, 4]`
1717+
- B: `[1, 2, 3, 4]`
1718+
- C: `{1, 1, 2, 3, 4}`
1719+
- D: `{1, 2, 3, 4}`
1720+
1721+
<details><summary><b>Ответ</b></summary>
1722+
<p>
1723+
1724+
#### Ответ: D
1725+
1726+
Объект `Set` является коллекцией _unique_ значений: значение может появляться только один раз в наборе.
1727+
1728+
Мы передали последовательность `[1, 1, 2, 3, 4]` с повторяющимся значением `1`. Поскольку в наборе не может быть двух одинаковых значений, одно из них удаляется. Это приводит к `{1, 2, 3, 4}`.
1729+
1730+
</p>
1731+
</details>
1732+
1733+
---
1734+
1735+
###### 57. Какой будет вывод?
1736+
1737+
```javascript
1738+
// counter.js
1739+
let counter = 10;
1740+
export default counter;
1741+
```
1742+
1743+
```javascript
1744+
// index.js
1745+
import myCounter from "./counter";
1746+
1747+
myCounter += 1;
1748+
1749+
console.log(myCounter);
1750+
```
1751+
1752+
- A: `10`
1753+
- B: `11`
1754+
- C: `Error`
1755+
- D: `NaN`
1756+
1757+
<details><summary><b>Ответ</b></summary>
1758+
<p>
1759+
1760+
#### Ответ: C
1761+
1762+
Импортированный модуль является _read-only_: вы не можете изменить импортированный модуль. Только модуль, который их экспортирует, может изменить его значение.
1763+
1764+
Когда мы пытаемся увеличить значение `myCounter`, выдается ошибка: `myCounter` доступен только для чтения и не может быть изменен.
1765+
1766+
</p>
1767+
</details>
1768+
1769+
---
1770+
1771+
###### 58. Какой будет вывод?
1772+
1773+
```javascript
1774+
const name = "Lydia";
1775+
age = 21;
1776+
1777+
console.log(delete name);
1778+
console.log(delete age);
1779+
```
1780+
1781+
- A: `false`, `true`
1782+
- B: `"Lydia"`, `21`
1783+
- C: `true`, `true`
1784+
- D: `undefined`, `undefined`
1785+
1786+
<details><summary><b>Ответ</b></summary>
1787+
<p>
1788+
1789+
#### Ответ: A
1790+
1791+
Оператор `delete` возвращает логическое значение: `true` при успешном удалении, иначе он вернет `false`. Однако переменные, объявленные с ключевым словом `var`,` const` или `let`, не могут быть удалены с помощью оператора` delete`.
1792+
1793+
Переменная `name` была объявлена ​​с ключевым словом `const`, поэтому ее удаление не было успешным: возвращается `false`. Когда мы устанавливаем `age` равным `21`, мы фактически добавляем свойство с именем `age` к глобальному объекту. Вы можете успешно удалить свойства из объектов, в том числе из глобального объекта, поэтому `delete age` возвращает `true`.
1794+
1795+
</p>
1796+
</details>
1797+
1798+
---
1799+
1800+
###### 59. Какой будет вывод?
1801+
1802+
```javascript
1803+
const numbers = [1, 2, 3, 4, 5];
1804+
const [y] = numbers;
1805+
1806+
console.log(y);
1807+
```
1808+
1809+
- A: `[[1, 2, 3, 4, 5]]`
1810+
- B: `[1, 2, 3, 4, 5]`
1811+
- C: `1`
1812+
- D: `[1]`
1813+
1814+
<details><summary><b>Ответ</b></summary>
1815+
<p>
1816+
1817+
#### Ответ: C
1818+
1819+
Мы можем распаковать значения из массивов или свойств из объектов путем деструктуризации. Например:
1820+
1821+
```javascript
1822+
[a, b] = [1, 2];
1823+
```
1824+
1825+
<img src="https://i.imgur.com/ADFpVop.png" width="200">
1826+
1827+
Значение `a` теперь равно `1`, а значение `b` теперь равно `2`. Что мы на самом деле сделали в этом вопросе, так это:
1828+
1829+
```javascript
1830+
[y] = [1, 2, 3, 4, 5];
1831+
```
1832+
1833+
<img src="https://i.imgur.com/NzGkMNk.png" width="200">
1834+
1835+
Это означает, что значение `y` равно первому значению в массиве, которое является числом` 1`. Когда мы регистрируем `y`, возвращается `1`.
1836+
1837+
</p>
1838+
</details>
1839+
1840+
---
1841+
1842+
###### 60. Какой будет вывод?
1843+
1844+
```javascript
1845+
const user = { name: "Lydia", age: 21 };
1846+
const admin = { admin: true, ...user };
1847+
1848+
console.log(admin);
1849+
```
1850+
1851+
- A: `{ admin: true, user: { name: "Lydia", age: 21 } }`
1852+
- B: `{ admin: true, name: "Lydia", age: 21 }`
1853+
- C: `{ admin: true, user: ["Lydia", 21] }`
1854+
- D: `{ admin: true }`
1855+
1856+
<details><summary><b>Ответ</b></summary>
1857+
<p>
1858+
1859+
#### Ответ: B
1860+
1861+
Можно комбинировать объекты с помощью оператора распространения `...`. Это позволяет создавать копии пар ключ/значение одного объекта и добавлять их в другой объект. В этом случае мы создаем копии объекта `user` и добавляем их в объект `admin`. Объект `admin` теперь содержит скопированные пары ключ/значение, что приводит к `{admin: true, name: "Lydia", age: 21}`.
1862+
1863+
</p>
1864+
</details>
1865+
1866+
---
1867+
1868+
###### 61. Какой будет вывод?
1869+
1870+
```javascript
1871+
const person = { name: "Lydia" };
1872+
1873+
Object.defineProperty(person, "age", { value: 21 });
1874+
1875+
console.log(person);
1876+
console.log(Object.keys(person));
1877+
```
1878+
1879+
- A: `{ name: "Lydia", age: 21 }`, `["name", "age"]`
1880+
- B: `{ name: "Lydia", age: 21 }`, `["name"]`
1881+
- C: `{ name: "Lydia"}`, `["name", "age"]`
1882+
- D: `{ name: "Lydia"}`, `["age"]`
1883+
1884+
<details><summary><b>Ответ</b></summary>
1885+
<p>
1886+
1887+
#### Ответ: B
1888+
1889+
С помощью метода `defineProperty` мы можем добавлять новые свойства к объекту или изменять существующие. Когда мы добавляем свойство к объекту с помощью метода `defineProperty`, они по умолчанию _не перечисляемые_. Метод `Object.keys` возвращает все имена _enumerable_ свойств объекта, в данном случае только `"name"`.
1890+
1891+
Свойства, добавленные с помощью метода `defineProperty`, по умолчанию неизменны. Вы можете переопределить это поведение, используя свойства `writable`, `configurable` и `enumerable`. Таким образом, метод `defineProperty` дает вам гораздо больший контроль над свойствами, которые вы добавляете к объекту.
1892+
1893+
</p>
1894+
</details>
1895+
1896+
---
1897+
1898+
###### 62. Какой будет вывод?
1899+
1900+
```javascript
1901+
const settings = {
1902+
username: "lydiahallie",
1903+
level: 19,
1904+
health: 90
1905+
};
1906+
1907+
const data = JSON.stringify(settings, ["level", "health"]);
1908+
console.log(data);
1909+
```
1910+
1911+
- A: `"{"level":19, "health":90}"`
1912+
- B: `"{"username": "lydiahallie"}"`
1913+
- C: `"["level", "health"]"`
1914+
- D: `"{"username": "lydiahallie", "level":19, "health":90}"`
1915+
1916+
<details><summary><b>Ответ</b></summary>
1917+
<p>
1918+
1919+
#### Ответ: A
1920+
1921+
Второй аргумент `JSON.stringify` - это _replacer_. Заменитель может быть либо функцией, либо массивом, и позволяет вам контролировать, что и как должны быть преобразованы в значения.
1922+
1923+
Если заменитель является _array_, только свойства, имена которых включены в массив, будут добавлены в строку JSON. В этом случае включаются только свойства с именами `"level"` и `"health"`, `"username"` исключается. `data` теперь равен `"{"level":19, "health":90}"`.
1924+
1925+
Если заменитель является _function_, эта функция вызывается для каждого свойства объекта, который вы преобразуете. Значение, возвращаемое из этой функции, будет значением свойства при добавлении в строку JSON. Если значение равно undefined, это свойство исключается из строки JSON.
1926+
1927+
</p>
1928+
</details>
1929+
1930+
---
1931+
1932+
###### 63. Какой будет вывод?
1933+
1934+
```javascript
1935+
let num = 10;
1936+
1937+
const increaseNumber = () => num++;
1938+
const increasePassedNumber = number => number++;
1939+
1940+
const num1 = increaseNumber();
1941+
const num2 = increasePassedNumber(num1);
1942+
1943+
console.log(num1);
1944+
console.log(num2);
1945+
```
1946+
1947+
- A: `10`, `10`
1948+
- B: `10`, `11`
1949+
- C: `11`, `11`
1950+
- D: `11`, `12`
1951+
1952+
<details><summary><b>Ответ</b></summary>
1953+
<p>
1954+
1955+
#### Ответ: A
1956+
1957+
Унарный оператор `++` _first возвращает_ значение операнда, _then приращивает_ значение операнда. Значение `num1` равно `10`, так как функция увеличений вначале возвращает значение `num`, которое равно `10`, и только затем увеличивает значение `num`.
1958+
1959+
`num2` - это `10`, так как мы передали `num1` в `incpasePassedNumber`. `number` равно `10` (значение `num1`. Опять же, унарный оператор `++` _first возвращает_ значение операнда, _then увеличивает значение операнда. Значение `number` равно `10`, поэтому `num2` равно `10`.
1960+
1961+
</p>
1962+
</details>

0 commit comments

Comments
 (0)