file.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // makeProfileTimer
  2. let makeProfileTimer = () => {
  3. let result = performance.now()
  4. // console.log('result',result)
  5. return () => {
  6. let timer = performance.now()
  7. // console.log('timer', timer)
  8. return timer - result
  9. }
  10. }
  11. var timer = makeProfileTimer()
  12. alert(timer())
  13. // makeSaver
  14. var makeSaver = (callback) =>{
  15. var result = callback
  16. return () =>{
  17. return result
  18. }
  19. }
  20. var saver = makeSaver(Math.random()) //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random
  21. // в примере). На этом этапе Math.random НЕ вызывается
  22. var value1 = saver() //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
  23. var value2 = saver() //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную
  24. //в makeSaver функцию;
  25. value1 === value2 // всегда true
  26. var saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random()*6)])
  27. var value3 = saver2()
  28. var value4 = saver2()
  29. value3 === value4 // тоже должно быть true
  30. // Final Countdown
  31. for (let i = 0; i <= 5; i++) {
  32. setTimeout( () => {
  33. i === 5 ? console.log('Lets go!') : console.log(5 - i) }, i * 1000)
  34. }