|
@@ -12,25 +12,31 @@ function makeProfileTimer() {
|
|
|
// // т. е. измерить время выполнения alert
|
|
|
|
|
|
function makeSaver(funk) {
|
|
|
- let savedResult = funk()
|
|
|
- let result = () => {
|
|
|
-
|
|
|
+
|
|
|
+ let savedResult
|
|
|
+ let saverInner = () => {
|
|
|
+ if (savedResult == undefined) {
|
|
|
+ savedResult = funk()
|
|
|
+
|
|
|
+ }
|
|
|
return savedResult
|
|
|
+
|
|
|
}
|
|
|
- return result
|
|
|
+
|
|
|
+ return saverInner
|
|
|
}
|
|
|
-// var saver = makeSaver(Math.random) //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random
|
|
|
-// // в примере). На этом этапе Math.random НЕ вызывается
|
|
|
-// var value1 = saver() //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
|
|
|
-// var value2 = saver() //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную
|
|
|
-// //в makeSaver функцию;
|
|
|
-// value1 === value2 // всегда true
|
|
|
+var saver = makeSaver(Math.random) //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random
|
|
|
+ // в примере). На этом этапе Math.random НЕ вызывается
|
|
|
+ var value1 = saver() //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
|
|
|
+ var value2 = saver() //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную
|
|
|
+ //в makeSaver функцию;
|
|
|
+ value1 === value2 // всегда true
|
|
|
|
|
|
-// var saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random()*6)])
|
|
|
-// var value3 = saver2()
|
|
|
-// var value4 = saver2()
|
|
|
+ var saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random()*6)])
|
|
|
+ var value3 = saver2()
|
|
|
+ var value4 = saver2()
|
|
|
|
|
|
-// value3 === value4 // тоже должно быть true
|
|
|
+ value3 === value4 // тоже должно быть true
|
|
|
|
|
|
function starter (number) {
|
|
|
|
|
@@ -54,4 +60,4 @@ function makeSaver(funk) {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- starter(5)
|
|
|
+ // starter(5)
|