Browse Source

HW<9> done

Andrey 2 years ago
parent
commit
5d61f79296
1 changed files with 79 additions and 0 deletions
  1. 79 0
      Dz9 js/Dz9js.html

+ 79 - 0
Dz9 js/Dz9js.html

@@ -0,0 +1,79 @@
+<!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 timeStart = performance.now()
+            return function sec() {
+                let timeEnd = performance.now()
+                return `Proshlo ${timeEnd - timeStart} millisec`
+            }
+        }
+
+        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 (sec = 0) {
+                for (let a = 5; a >= 0; a--) {
+                    setTimeout(() => {
+                        if (a) {
+                            console.log(a)
+                        }
+                        else {
+                            console.log("Поехали!")
+                        }
+                    }, (sec++) * 1000)
+                }
+            })();
+
+            
+
+
+    </script>
+</body>
+
+</html>