Показать сообщение отдельно
  #1 (permalink)  
Старый 30.11.2018, 18:07
Аспирант
Отправить личное сообщение для Marson Посмотреть профиль Найти все сообщения от Marson
 
Регистрация: 14.08.2018
Сообщений: 65

Напишите функцию makeSaver
Напишите функцию makeSaver, которая:
var saver = makeSaver(Math.random) //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random 
                                      // в примере). На этом этапе Math.random НЕ вызывается
    var value1 = saver()              //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
    var value2 = saver()              //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную 
                                      //в makeSaver функцию;
    value1 === value2                 // всегда true


Таким образом makeSaver решает две задачи:

Навсегда сохраняет результат функции. Это актуально, например, для Math.random.
Действует лениво, то есть вызывает Math.random только тогда, когда результат действительно нужен. Если же по каким-то причинам значение не понадобится, то Math.random даже не будет вызван

function makeSaver(fn){
  return function (){
    return fn;
  }
}

var saver = makeSaver(Math.random());


Можете помочь понять, пожалуйста? Начало кода хоть верное?
Ответить с цитированием