123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- <!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>
- //makeProfileTimer
- var timer = makeProfileTimer();
- function makeProfileTimer(){
- function adder(){
- let t0 = performance.now();
- alert("Измеряем этот alert")
- let t1 = performance.now();
- return "Alert был аж " + (t1 - t0) + " мс"
- }
- return adder
- }
- console.log(timer())
- //makeSaver
- 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 был только один раз`)
- function makeSaver(x){
- let count = 0;
- let functionStorage;
- let saverFn = function() {
- if (count == 0){
- functionStorage = x() ;
- }else{
- return functionStorage;
- }
- count++;
- return functionStorage;
- }
- return saverFn;
- }
- //Final Countdown
- (function fn(n) {
- if (n === 0) return console.log("поехали");
- setTimeout(() => fn(n-1), 1000,console.log(n))
- })(5);
- //myBind +++++++++
-
- </script>
-
- </body>
- </html>
|