|
@@ -0,0 +1,41 @@
|
|
|
+// makeProfileTimer
|
|
|
+
|
|
|
+let makeProfileTimer = () => {
|
|
|
+ let result = performance.now()
|
|
|
+ console.log('result',result)
|
|
|
+ return () => {
|
|
|
+ let timer = performance.now()
|
|
|
+ console.log('timer', timer)
|
|
|
+ return timer - result
|
|
|
+ }
|
|
|
+}
|
|
|
+var timer = makeProfileTimer()
|
|
|
+alert(timer())
|
|
|
+
|
|
|
+// makeSaver
|
|
|
+var makeSaver = (callback) =>{
|
|
|
+ var result = callback
|
|
|
+ return () =>{
|
|
|
+ return result
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+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()
|
|
|
+
|
|
|
+ value3 === value4 // тоже должно быть true
|
|
|
+
|
|
|
+ // Final Countdown
|
|
|
+
|
|
|
+ for (let i = 0; i <= 5; i++) {
|
|
|
+ setTimeout( () => {
|
|
|
+ i === 5 ? console.log('Lets go!') : console.log(5 - i) }, i * 1000)
|
|
|
+ }
|