script.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. //makeProfileTimer
  2. function makeProfileTimer(){
  3. let a = performance.now();
  4. return function time (){
  5. let b = performance.now()
  6. return `Время выполнения ${b - a}`
  7. }
  8. }
  9. let timer = makeProfileTimer()
  10. alert('Замеряем время работы этого alert');
  11. alert(timer());
  12. //makeSaver
  13. function makeSaver(parameter) {
  14. let called;
  15. let result;
  16. return function (...args) {
  17. if (called) {
  18. return result;
  19. }
  20. else {
  21. called = true;
  22. result = parameter(...args);
  23. return result;
  24. }
  25. }
  26. }
  27. var saver = makeSaver(Math.random) //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random
  28. // в примере). На этом этапе Math.random НЕ вызывается
  29. var value1 = saver() //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
  30. var value2 = saver() //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную
  31. //в makeSaver функцию;
  32. value1 === value2 // всегда true
  33. var saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random()*6)])
  34. var value3 = saver2()
  35. var value4 = saver2()
  36. value3 === value4 // тоже должно быть true
  37. let namePrompt = prompt.bind(window, 'Как тебя зовут?')
  38. let nameSaver = makeSaver(namePrompt)
  39. alert(`Привет! Prompt еще не было!`)
  40. alert(`Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`)
  41. alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`)
  42. //Final Countdown
  43. for (let i = 5 ; i >= 0; i--){
  44. console.log(i)
  45. setTimeout(() => console.log(5 - i), i*1000)
  46. }
  47. console.log("Поехали!")