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