Forráskód Böngészése

hw10 first task and lass worc closures

serg155alternate 2 éve
szülő
commit
4c2e7e4f3a

+ 15 - 0
Class works/cloders/index.html

@@ -0,0 +1,15 @@
+<!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>
+    <button id ='button1'>+++++</button>
+    <button id ='button2'>******</button>
+
+    <script src="script.js"></script>
+</body>
+</html>

+ 19 - 0
Class works/cloders/script.js

@@ -0,0 +1,19 @@
+
+function clickCounter(elem){
+    elem.onclick = clickCounter();
+    
+    let counter = 0; 
+    function clickCounter(){ 
+
+        
+        return function() { 
+        elem.innerHTML = `${counter}`; 
+        console.log(counter)
+        return counter++;   
+    };      
+}     
+};  
+
+clickCounter(button1);
+clickCounter(button2);
+

+ 88 - 1
HW10 Closures and scopes/script.js

@@ -1 +1,88 @@
-//Closures and scopes
+/* //Closures and scopes
+Замыкания
+
+Напишите функцию makeProfileTimer, которая служит для замера времени выполнения другого кода и работает следующим образом:
+
+   var timer = makeProfileTimer()
+   alert('Замеряем время работы этого alert');  //некий код, время выполнения которого мы хотим измерить с высокой точностью
+   alert(timer()); //alert должен вывести время в микросекундах от выполнения makeProfileTimer до момента вызова timer(), 
+                   
+   // т. е. измерить время выполнения alert
+Используйте performance.now() */
+
+function makeProfileTimer() {
+    let t0 = performance.now();
+        return function tn(){
+                let t1 = performance.now();
+                return ("Call took " + (t1 - t0) + " milliseconds.")
+        } 
+}
+
+
+let timer = makeProfileTimer();
+//alert('Замеряем время работы этого alert'); 
+//alert(timer());
+
+let timer2 = makeProfileTimer();
+//confirm();
+//confirm(timer2());
+
+let timer3 = makeProfileTimer();
+//console.log('timer3')
+//console.log(timer3());
+
+/* makeSaver
+Напишите функцию makeSaver, которая: */
+
+//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 был только один раз`) */
+
+/* Таким образом makeSaver решает две задачи:
+Навсегда сохраняет результат функции. Это актуально, например, для Math.random.
+Действует лениво, то есть вызывает Math.random только тогда, когда результат действительно нужен. Если же по каким-то причинам значение не понадобится, то Math.random даже не будет вызван */
+
+function makeSaver(func){
+    let funcRes;
+    console.log(funcRes);
+    return function(){
+          return func;
+    }
+}
+
+console.log(makeSaver());
+
+
+
+let saver = makeSaver(Math.random)
+
+
+console.log(saver);
+
+
+
+//console.log(saver());
+//console.log(saver());
+
+
+var value1 = saver()              //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
+var value2 = saver()              //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную 
+//в makeSaver функцию;
+//console.log(value1 === value2);                 // всегда true

+ 1 - 2
HW6 Functions and scopes/script.js

@@ -116,5 +116,4 @@ let funcObj = {
 
                 }
 
-funcObj.a();
-funcObj.intrandom();
+//funcObj[prompt()];