Browse Source

HW<9> done

Illia Kozyr 1 year ago
parent
commit
4cc1cd2994
1 changed files with 81 additions and 0 deletions
  1. 81 0
      HW 9/index.html

+ 81 - 0
HW 9/index.html

@@ -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>