|
@@ -0,0 +1,114 @@
|
|
|
+
|
|
|
+// makeProfileTimer
|
|
|
+// Напишите функцию makeProfileTimer, которая служит для замера времени выполнения другого кода
|
|
|
+
|
|
|
+
|
|
|
+// function makeProfileTimer() {
|
|
|
+// let t0 = performance.now();
|
|
|
+// alert('Замеряем время работы этого alert')
|
|
|
+// var t1 = performance.now();
|
|
|
+// let timer = () => t1 - t0;
|
|
|
+// alert(timer())
|
|
|
+// }
|
|
|
+// makeProfileTimer();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+// makeSaver____________________________________________
|
|
|
+
|
|
|
+// function makeSaver(fValue) {
|
|
|
+// let some = fValue
|
|
|
+// return () => {
|
|
|
+// function checked() {
|
|
|
+// some = some()
|
|
|
+// }
|
|
|
+// if(typeof some === 'function') checked()
|
|
|
+// return some
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// var saver = makeSaver(Math.random); //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random
|
|
|
+// // в примере). На этом этапе Math.random НЕ вызывается
|
|
|
+// var value1 = saver(); //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
|
|
|
+// var value2 = saver(); //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную
|
|
|
+// //в makeSaver функцию;
|
|
|
+// console.log(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();
|
|
|
+
|
|
|
+// console.log(value3 === value4); // тоже должно быть true
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+// let namePrompt = prompt.bind(window, 'Как тебя зовут?');
|
|
|
+// let nameSaver = makeSaver(namePrompt);
|
|
|
+// alert(`Привет! Prompt еще не было!`);
|
|
|
+// alert(`Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`);
|
|
|
+// alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`);
|
|
|
+
|
|
|
+
|
|
|
+// Final Countdown___________________________________
|
|
|
+
|
|
|
+// function SelfInvoked (value) {
|
|
|
+// console.log(value);
|
|
|
+// value = value -1;
|
|
|
+
|
|
|
+// if (value === 0) {
|
|
|
+// setTimeout(SelfInvoked, 1000, 'поехали!');
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// if(value) {
|
|
|
+// return setTimeout(SelfInvoked, 1000, value);
|
|
|
+// }
|
|
|
+// return;
|
|
|
+// }
|
|
|
+
|
|
|
+// SelfInvoked(5);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+// myBind_____________________________________________________
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+// function myBind (funcBind, context, mass) {
|
|
|
+
|
|
|
+// return function (...arg) {
|
|
|
+// let numberOfValue = 0;
|
|
|
+
|
|
|
+// for (let i = 0; i < mass.length; i++) {
|
|
|
+// if (!mass[i]) {
|
|
|
+// mass[i] = arg[numberOfValue];
|
|
|
+// numberOfValue++;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// let result = funcBind.apply(context, mass)
|
|
|
+// return result;
|
|
|
+// }
|
|
|
+
|
|
|
+// }
|
|
|
+
|
|
|
+// var pow5 = myBind(Math.pow, Math, [undefined, 5]) // первый параметр - функция для биндинга значений по умолчанию,
|
|
|
+// // второй - this для этой функции, третий - массив, в котором undefined означает
|
|
|
+// // параметры, которые должны передаваться при вызове,
|
|
|
+// // а другие значения являются значениями по умолчанию:
|
|
|
+// var cube = myBind(Math.pow, Math, [undefined, 3]) // cube возводит число в куб
|
|
|
+
|
|
|
+// console.log(pow5(2))
|
|
|
+// console.log(cube(3))
|
|
|
+
|
|
|
+
|
|
|
+// var chessMin = myBind(Math.min, Math, [undefined, 4, undefined, 5,undefined, 8,undefined, 9])
|
|
|
+// console.log(chessMin(-1,-5,3,15)) // вызывает Math.min(-1, 4, -5, 5, 3, 8, 15, 9), результат -5
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+// var zeroPrompt = myBind(prompt, window, [undefined, "0"]) // аналогично, только теперь задается "0" как текст по умолчанию в prompt,
|
|
|
+// // а текст приглашения пользователя задается при вызове zeroPrompt
|
|
|
+// var someNumber = zeroPrompt("Введите число") // вызывает prompt("Введите число","0")
|
|
|
+
|
|
|
+// console.log (myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a','c','d') === 'abcdef')
|
|
|
+
|
|
|
+
|