|
@@ -71,19 +71,19 @@ father.addChild(daughter)
|
|
|
```
|
|
|
Используйте `performance.now()`
|
|
|
|
|
|
-### getSaver
|
|
|
-Напишите функцию `getSaver`, которая:
|
|
|
+### makeSaver
|
|
|
+Напишите функцию `makeSaver`, которая:
|
|
|
|
|
|
```javascript
|
|
|
- var saver = getSaver(Math.random) //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random
|
|
|
+ var saver = makeSaver(Math.random) //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random
|
|
|
// в примере). На этом этапе Math.random НЕ вызывается
|
|
|
- var value1 = saver() //saver вызывает переданную в getSaver функцию, запоминает результат и возвращает его
|
|
|
+ var value1 = saver() //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
|
|
|
var value2 = saver() //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную
|
|
|
- //в getSaver функцию;
|
|
|
+ //в makeSaver функцию;
|
|
|
value1 === value2 // всегда true
|
|
|
```
|
|
|
|
|
|
-Таким образом `getSaver` решает две задачи:
|
|
|
+Таким образом `makeSaver` решает две задачи:
|
|
|
0. Навсегда сохраняет результат функции. Это актуально, например, для `Math.random`.
|
|
|
1. Действует *лениво*, то есть вызывает `Math.random` только тогда, когда результат *действительно* нужен. Если же по каким-то причинам значение не понадобится, то `Math.random` даже не будет вызван
|
|
|
|