index.html 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <script>
  11. //makeProfileTimer
  12. var timer = makeProfileTimer();
  13. function makeProfileTimer(){
  14. function adder(){
  15. let t0 = performance.now();
  16. alert("Измеряем этот alert")
  17. let t1 = performance.now();
  18. return "Alert был аж " + (t1 - t0) + " мс"
  19. }
  20. return adder
  21. }
  22. console.log(timer())
  23. //makeSaver
  24. var saver = makeSaver(Math.random) //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random
  25. // в примере). На этом этапе Math.random НЕ вызывается
  26. var value1 = saver() //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
  27. var value2 = saver() //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную
  28. //в makeSaver функцию;
  29. value1 === value2 // всегда true
  30. var saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random()*6)])
  31. var value3 = saver2()
  32. var value4 = saver2()
  33. value3 === value4 // тоже должно быть true
  34. let namePrompt = prompt.bind(window, 'Как тебя зовут?')
  35. let nameSaver = makeSaver(namePrompt)
  36. alert(`Привет! Prompt еще не было!`)
  37. alert(`Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`)
  38. alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`)
  39. function makeSaver(x){
  40. let count = 0;
  41. let functionStorage;
  42. let saverFn = function() {
  43. if (count == 0){
  44. functionStorage = x() ;
  45. }else{
  46. return functionStorage;
  47. }
  48. count++;
  49. return functionStorage;
  50. }
  51. return saverFn;
  52. }
  53. //Final Countdown
  54. (function fn(n) {
  55. if (n === 0) return console.log("поехали");
  56. setTimeout(() => fn(n-1), 1000,console.log(n))
  57. })(5);
  58. //myBind +++++++++
  59. </script>
  60. </body>
  61. </html>