1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- function taskMakeProfileTimer() {
- function makeProfileTimer() {
- let startTime = performance.now();
- function calc() {
- let endTime = performance.now();
- let result = endTime - startTime;
- return result
- }
- return calc;
- }
- let timer = makeProfileTimer()
- alert('Время выполнения');
- alert(timer());
- }
- // taskMakeProfileTimer()
- function taskMakeSaver() {
- function makeSaver(fn) {
- let result;
- let doFunc = true;
- return function () {
- if (doFunc) {
- result = fn();
- doFunc = false;
- }
- return result;
- }
- }
- let nameSaver = makeSaver(() => prompt('Введите свое имя!'))
- alert('Имя еще не спрашивали!')
- let name1 = nameSaver()
- alert('Только что спросили имя!')
- let name2 = nameSaver()
- alert("Второй раз спрашиваете?")
- alert("Привет , " + nameSaver() + (nameSaver() === nameSaver() ? ". Готово!" : 'Какой-то бред!'))
- }
- // taskMakeSaver()
- function finalCountdown(i) {
- return setTimeout(function () {
- if (i === 0) {
- console.log('Поехали!')
- } else {
- console.log(i)
- return finalCountdown(--i)
- }
- }, 1000)
- }
- // finalCountdown(5)
- function myBind(fn, context, arr) {
- return (...params) => {
- let indexParam = 0;
- let newArray = arr.map((i) => (i === undefined ? params[indexParam++] : i))
- return fn.call(context, ...newArray)
- }
- }
- let pow5 = myBind(Math.pow, Math, [undefined, 5])
- let cube = myBind(Math.pow, Math, [undefined, 3])
- pow5(2) // => 32,
- cube(3) // => 27
- let chessMin = myBind(Math.min, Math, [undefined, 4, undefined, 5, undefined, 8, undefined, 9])
- chessMin(-1, -5, 3, 15) // вызывает Math.min(-1, 4, -5, 5, 3, 8, 15, 9), результат -5
- let zeroPrompt = myBind(prompt, window, [undefined, "0"])
- let someNumber = zeroPrompt("Введите число")
- myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a', 'c', 'd') === 'abcdef'
|