|
@@ -0,0 +1,81 @@
|
|
|
|
+<!DOCTYPE html>
|
|
|
|
+<html lang="en">
|
|
|
|
+ <head>
|
|
|
|
+ <meta charset="UTF-8" />
|
|
|
|
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
|
|
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
|
|
+ <title>Document</title>
|
|
|
|
+ </head>
|
|
|
|
+ <body>
|
|
|
|
+ <script>
|
|
|
|
+ // -------------------------------makeProfileTimer-------------------------------
|
|
|
|
+
|
|
|
|
+ function makeProfileTimer() {
|
|
|
|
+ let t0 = performance.now();
|
|
|
|
+ return function tn() {
|
|
|
|
+ let t1 = performance.now();
|
|
|
|
+ return t1 - t0 + ` milliseconds`;
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ let timer = makeProfileTimer();
|
|
|
|
+ alert("Замеряем время работы этого alert");
|
|
|
|
+ alert(timer());
|
|
|
|
+
|
|
|
|
+ // -------------------------------------makeSaver---------------------------------
|
|
|
|
+
|
|
|
|
+ function makeSaver(name) {
|
|
|
|
+ let promptNotCalled = true;
|
|
|
|
+ let nameAgain;
|
|
|
|
+ return function () {
|
|
|
|
+ if (promptNotCalled) {
|
|
|
|
+ nameAgain = name();
|
|
|
|
+ promptNotCalled = false;
|
|
|
|
+ }
|
|
|
|
+ return nameAgain;
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var saver = makeSaver(Math.random); //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random
|
|
|
|
+ // в примере). На этом этапе Math.random НЕ вызывается
|
|
|
|
+ var value1 = saver(); //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
|
|
|
|
+ var value2 = saver(); //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную
|
|
|
|
+ //в makeSaver функцию;
|
|
|
|
+ value1 === value2; // всегда true
|
|
|
|
+
|
|
|
|
+ var saver2 = makeSaver(
|
|
|
|
+ () =>
|
|
|
|
+ console.log("saved function called") ||
|
|
|
|
+ [null, undefined, false, "", 0, Math.random()][
|
|
|
|
+ Math.ceil(Math.random() * 6)
|
|
|
|
+ ]
|
|
|
|
+ );
|
|
|
|
+ var value3 = saver2();
|
|
|
|
+ var value4 = saver2();
|
|
|
|
+
|
|
|
|
+ value3 === value4; // тоже должно быть true
|
|
|
|
+
|
|
|
|
+ let namePrompt = prompt.bind(window, "Как тебя зовут?");
|
|
|
|
+ let nameSaver = makeSaver(namePrompt);
|
|
|
|
+ alert(`Привет! Prompt еще не было!`);
|
|
|
|
+ alert(
|
|
|
|
+ `Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`
|
|
|
|
+ );
|
|
|
|
+ alert(
|
|
|
|
+ `Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ //-----------------------------------------Final Countdown--------------------------------------
|
|
|
|
+
|
|
|
|
+ (function finalCountdown(sec = 0) {
|
|
|
|
+ for (let i = 5; i >= 0; i--) {
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ i ? console.log(i) : console.log("поехали");
|
|
|
|
+ }, sec++ * 1000);
|
|
|
|
+ }
|
|
|
|
+ })();
|
|
|
|
+
|
|
|
|
+ //----------------------------------------------myBind--------------------------------------
|
|
|
|
+ </script>
|
|
|
|
+ </body>
|
|
|
|
+</html>
|