index.html 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. function makeProfileTimer() {
  13. let t0 = performance.now();
  14. return function tn() {
  15. let t1 = performance.now();
  16. return t1 - t0;
  17. };
  18. }
  19. let timer = makeProfileTimer();
  20. alert("Замеряем время работы этого alert");
  21. alert(timer());
  22. // -------------------------------------makeSaver---------------------------------
  23. function makeSaver(name) {
  24. let promptNotCalled = true;
  25. let nameAgain;
  26. return function () {
  27. if (promptNotCalled) {
  28. nameAgain = name();
  29. promptNotCalled = false;
  30. }
  31. return nameAgain;
  32. };
  33. }
  34. var saver = makeSaver(Math.random); //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random
  35. // в примере). На этом этапе Math.random НЕ вызывается
  36. var value1 = saver(); //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
  37. var value2 = saver(); //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную
  38. //в makeSaver функцию;
  39. value1 === value2; // всегда true
  40. var saver2 = makeSaver(
  41. () =>
  42. console.log("saved function called") ||
  43. [null, undefined, false, "", 0, Math.random()][
  44. Math.ceil(Math.random() * 6)
  45. ]
  46. );
  47. var value3 = saver2();
  48. var value4 = saver2();
  49. value3 === value4; // тоже должно быть true
  50. let namePrompt = prompt.bind(window, "Как тебя зовут?");
  51. let nameSaver = makeSaver(namePrompt);
  52. alert(`Привет! Prompt еще не было!`);
  53. alert(
  54. `Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`
  55. );
  56. alert(
  57. `Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`
  58. );
  59. //-----------------------------------------Final Countdown--------------------------------------
  60. (function finalCountdown(sec = 0) {
  61. for (let i = 5; i >= 0; i--) {
  62. setTimeout(() => {
  63. i ? console.log(i) : console.log("поехали");
  64. }, sec++ * 1000);
  65. }
  66. })();
  67. //----------------------------------------------myBind--------------------------------------
  68. </script>
  69. </body>
  70. </html>