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: 1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,12 +4,12 @@ importance: 5
4
4
5
5
# Установка и уменьшение значения счётчика
6
6
7
-
Изменить код `makeCounter()` так чтобы счетчик мог увеличивать и устанавливать значение:
7
+
Изменить код `makeCounter()` так, чтобы счетчик мог увеличивать и устанавливать значение:
8
8
9
9
-`counter()` должен вернуть следующее значение (как и раньше).
10
10
-`counter.set(value)` должен установить значение `value` в `count`.
11
11
-`counter.decrease()` должен увеличить значение `count` на 1.
12
12
13
13
Посмотрите код песочницы для полного примера использования.
14
14
15
-
P.S. Для того чтобы хранить текущее значение счётчика вы можете использовать как замыкание, так и свойство функции. Или написать оба варианта.
15
+
P.S. Для того, чтобы сохранить текущее значение счётчика можно воспользоваться как замыканием, так и свойством функции. Или написать решение, используя оба варианта.
Copy file name to clipboardExpand all lines: 1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
2
2
1. В общем, чтобы это *хоть как-нибудь* заработало, результат, возвращаемый `sum`, должен быть функцией.
3
3
2. Между вызовами эта функция должна удерживать в памяти текущее значение счётчика.
4
-
3. Согласно заданию, функция должна преобразовываться в число когда она используется в операции`==`. Функции -- объекты, так что преобразование происходит как описано в главе <info:object-toprimitive>, и мы можем предоставить наш собственный метод, возвращающий число.
4
+
3. Согласно заданию, функция должна преобразовываться в число, когда она используется с оператором`==`. Функции -- объекты, так что преобразование происходит, как описано в главе <info:object-toprimitive>, поэтому можно создать наш собственный метод, возвращающий число.
Copy file name to clipboardExpand all lines: 1-js/06-advanced-functions/06-function-object/article.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@
7
7
8
8
В JavaScript, функции -- это объекты.
9
9
10
-
Наглядно представлять функции мы можем как вызываемые "объекты-действия". Мы можем их не только вызывать, но и рассматривать их как объекты: добавлять/удалять свойства, передавать их по ссылке и т.д.
10
+
Удобно представить себе функции как вызываемые "объекты-действия". Мы можем их не только вызывать, но и рассматривать их как объекты: добавлять/удалять свойства, передавать их по ссылке и т.д.
"length" -- это еще одно встроенное свойство, возвращающее число параметров функции. Например:
82
+
"length" -- это еще одно встроенное свойство, возвращающее количество параметров функции. Например:
83
83
84
84
```js run
85
85
functionf1(a) {}
@@ -103,7 +103,7 @@ alert(many.length); // 2
103
103
- Функцию без аргументов, которая будет вызываться только в случае положительного ответа.
104
104
- Функцию с аргументами, которая будет вызываться в обоих случаях и возвращать ответ.
105
105
106
-
Идея состоит в том, что у нас есть простой синтаксис обработчика без аргументов для положительных ответов (наиболее распространённый случай), и, также реализована возможность передавать универсальные обработчики.
106
+
Идея состоит в том, что у нас есть простой синтаксис обработчика без аргументов для положительных ответов (наиболее распространённый случай), а также реализована возможность передавать универсальные обработчики.
107
107
108
108
Чтобы вызвать `handlers` правильно, мы проверяем свойство `length`:
109
109
@@ -301,7 +301,7 @@ sayHi = null;
301
301
welcome(); // Ошибка, вложенный вызов sayHi больше не работает!
302
302
```
303
303
304
-
Так происходит потому, что функция берет `sayHi` из её внешнего лексического окружения. Так как локальная переменная `sayHi` отсутствует, используется внешняя. И на момент вызова эта внешняя `sayHi` равна `null`.
304
+
Так происходит, потому что функция берет `sayHi` из её внешнего лексического окружения. Так как локальная переменная `sayHi` отсутствует, используется внешняя. И на момент вызова эта внешняя `sayHi` равна `null`.
305
305
306
306
Необязательное имя, которое можно вставить в Function Expression, как раз и призвано решать такого рода проблемы.
Теперь все работает потому, что имя `"func"` локальное и находится внутри функции. Теперь оно взято не снаружи (и недоступно оттуда). Спецификация гарантирует, что оно всегда будет ссылаться на текущую функцию.
327
+
Теперь все работает, потому что имя `"func"` локальное и находится внутри функции. Теперь оно взято не снаружи (и недоступно оттуда). Спецификация гарантирует, что оно всегда будет ссылаться на текущую функцию.
328
328
329
329
Внешний код все еще содержит переменные `sayHi` и `welcome`, но теперь `func` -- это "внутреннее имя функции", таким образом она может вызвать себя изнутри.
0 commit comments