//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');