index.html 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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. // let makeProfileTimer = () => {
  13. // let startTime = performance.now();
  14. // return () => performance.now() - startTime;
  15. // };
  16. // var timer = makeProfileTimer();
  17. // alert("Замеряем время работы этого alert"); //некий код, время выполнения которого мы хотим измерить с высокой точностью
  18. // alert(timer());
  19. //MAKESAVER
  20. // let makeSaver = (cb) => {
  21. // let someVariableToSave;
  22. // let isSaved = false;
  23. // return () => {
  24. // if (isSaved === false) {
  25. // someVariableToSave = cb();
  26. // isSaved = true;
  27. // }
  28. // return someVariableToSave;
  29. // };
  30. // };
  31. // var saver = makeSaver(Math.random);
  32. // var value1 = saver(); //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
  33. // var value2 = saver(); //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную
  34. // //в makeSaver функцию;
  35. // console.log(value1 === value2); // всегда true
  36. // var saver2 = makeSaver(
  37. // () =>
  38. // console.log("saved function called") ||
  39. // [null, undefined, false, "", 0, Math.random()][Math.ceil(Math.random() * 6)]
  40. // );
  41. // var value3 = saver2();
  42. // var value4 = saver2();
  43. // console.log(value3 === value4); // тоже должно быть true
  44. // let namePrompt = prompt.bind(window, "Как тебя зовут?");
  45. // let nameSaver = makeSaver(namePrompt);
  46. // alert(`Привет! Prompt еще не было!`);
  47. // alert(`Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`);
  48. // alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`);
  49. //FINAL COUNTDOWN
  50. // (() => {
  51. // let num = 5;
  52. // for (let i = num; i > 0; i--) {
  53. // setTimeout(() => console.log(i), i * 1000);
  54. // i === num && setTimeout(() => console.log("поехали!"), (num + 1) * 1000);
  55. // }
  56. // })();
  57. //MYBIND
  58. // let myBind = (cb, that, paramsToBind = []) => {
  59. // return (...params) => {
  60. // let rezParams = paramsToBind.map((el, idx) => {
  61. // if (el === undefined) {
  62. // el = params.shift()
  63. // }
  64. // return el;
  65. // });
  66. // rezParams = [...rezParams, ...params];
  67. // return cb.call(that, ...rezParams);
  68. // };
  69. // };
  70. // var pow5 = myBind(Math.pow, Math, [undefined, 5]); // первый параметр - функция для биндинга значений по умолчанию,
  71. // // второй - this для этой функции, третий - массив, в котором undefined означает
  72. // // параметры, которые должны передаваться при вызове,
  73. // // а другие значения являются значениями по умолчанию:
  74. // var cube = myBind(Math.pow, Math, [undefined, 3]); // cube возводит число в куб
  75. // console.log(pow5(2)); // => 32, вызывает Math.pow(2,5), соотнесите с [undefined, 5]
  76. // console.log(cube(3)); // => 27
  77. // var chessMin = myBind(Math.min, Math, [undefined, 4, undefined, 5, undefined, 8, undefined, 9]);
  78. // chessMin(-1, -5, 3, 15); // вызывает Math.min(-1, 4, -5, 5, 3, 8, 15, 9), результат -5
  79. // var zeroPrompt = myBind(prompt, window, [undefined, "0"]); // аналогично, только теперь задается "0" как текст по умолчанию в prompt,
  80. // // а текст приглашения пользователя задается при вызове zeroPrompt
  81. // var someNumber = zeroPrompt("Введите число"); // вызывает prompt("Введите число","0")
  82. // console.log(
  83. // myBind((...params) => params.join(""), null, [undefined, "b", undefined, undefined, "e", "f"])(
  84. // "a",
  85. // "c",
  86. // "d"
  87. // ) === "abcdef"
  88. // );
  89. </script>
  90. </body>
  91. </html>