123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <!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-------------------------------
- function makeProfileTimer() {
- let t0 = performance.now();
- return function tn() {
- let t1 = performance.now();
- return t1 - t0;
- };
- }
- let timer = makeProfileTimer();
- alert("Замеряем время работы этого alert");
- alert(timer());
- // -------------------------------------makeSaver---------------------------------
- function makeSaver(name) {
- let promptNotCalled = true;
- let nameAgain;
- return function () {
- if (promptNotCalled) {
- nameAgain = name();
- promptNotCalled = false;
- }
- return nameAgain;
- };
- }
- 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--------------------------------------
- (function finalCountdown(sec = 0) {
- for (let i = 5; i >= 0; i--) {
- setTimeout(() => {
- i ? console.log(i) : console.log("поехали");
- }, sec++ * 1000);
- }
- })();
- //----------------------------------------------myBind--------------------------------------
- </script>
- </body>
- </html>
|