Iryna Bolbat 2 years ago
parent
commit
98f332f0f4
2 changed files with 104 additions and 0 deletions
  1. 12 0
      js_08_closures/index.html
  2. 92 0
      js_08_closures/main.js

+ 12 - 0
js_08_closures/index.html

@@ -0,0 +1,12 @@
+<!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 src="main.js"></script>
+</body>
+</html>

+ 92 - 0
js_08_closures/main.js

@@ -0,0 +1,92 @@
+//1.makeProfileTimer
+// function makeProfileTimer(){
+//     let time = performance.now();
+//     return function sec(){
+//         return time * 1000;
+//     };
+// }
+// let timer = makeProfileTimer();
+// alert('Замеряем время работы этого alert'); 
+// alert(timer());
+
+//2.makeSaver
+// function makeSaver (fn){
+//     return function(){
+//         fn();
+//     }
+// }
+
+// function al(){
+//     let namePrompt = prompt.bind(window, 'Как тебя зовут?');
+//     let nameSaver = makeSaver(namePrompt);
+
+//     alert(`Привет! Prompt еще не было!`);
+//     alert(`Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`);
+//     alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`);
+// }
+
+// al();
+
+// let saver = makeSaver(Math.random);
+// let value1 = saver();
+// let value2 = saver();
+
+// console.log(value1 === value2);
+
+// let saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random()*6)]);
+// let value3 = saver2();
+// let value4 = saver2();
+
+// console.log(value3 === value4);
+
+//3.Final Countdown
+// let counter = 5;
+
+// function selfInvoked(){
+//     console.log(counter);
+//     let timer = setTimeout(() => {
+//         selfInvoked()
+//     }, 1000);
+    
+//     if(counter > 1){
+//         return function (){
+//             return counter--;
+//         }();
+//     }
+//     clearInterval(timer);
+
+//     if(counter === 1){
+//         console.log('поехали!');
+//     }
+// }
+// selfInvoked();
+
+//4.myBind
+// function myBind(fnBind, context, fn){
+//     return function(...args){
+//         let i = 0;
+//         let array = fn.map((arr) => {
+// 			if (arr === undefined) {
+// 				const argsEl = args[i];
+// 				i += 1;
+// 				return argsEl;
+// 			} else {
+// 				return arr;
+// 			}
+// 		});
+// 		return fnBind.apply(context, array);
+// 	};
+// }
+
+// let pow5 = myBind(Math.pow, Math, [undefined, 5]);
+// let cube = myBind(Math.pow, Math, [undefined, 3]);
+// let chessMin = myBind(Math.min, Math, [undefined, 4, undefined, 5,undefined, 8,undefined, 9]);
+
+// console.log(pow5(2));
+// console.log(cube(3));
+// console.log(chessMin(-1, -5, 3, 15));
+
+// let zeroPrompt = myBind(prompt, window, [undefined, "0"]); 
+// let someNumber = zeroPrompt("Введите число");
+
+// console.log(myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a','c','d') === 'abcdef');