12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- //makeProfileTimer
- function makeProfileTimer(){
- let a = performance.now();
- return function time (){
- let b = performance.now()
- return `Время выполнения ${b - a}`
- }
- }
- let timer = makeProfileTimer()
- alert('Замеряем время работы этого alert');
- alert(timer());
- //makeSaver
- function makeSaver(parameter) {
- let called;
- let result;
- return function (...args) {
- if (called) {
- return result;
- }
- else {
- called = true;
- result = parameter(...args);
- return result;
- }
- }
-
- }
- 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 был только один раз`)
- //Final Countdown
- for (let i = 5 ; i >= 0; i--){
- console.log(i)
- setTimeout(() => console.log(5 - i), i*1000)
- }
- console.log("Поехали!")
|