123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- // Замыкания
- // makeProfileTimer---------------------------------------------------------------------------------------------------------------------;
- function makeProfileTimer() {
- t1 = performance.now();
- confirm("Are you sure?");
- t2 = performance.now();
- return alert(
- "Call to confirm function took" + " " + (t2 - t1) + " " + "milliseconds"
- );
- }
- var timer = makeProfileTimer();
- alert(timer());
- // makeSaver----------------------------------------------------------------------------------------------------------------------------;
- function makeSaver(callable) {
- let res,
- executed = !1;
- return function () {
- return executed ? res : ((executed = !0), (res = callable()));
- };
- }
- var saver = makeSaver(Math.random);
- value1 = saver();
- value2 = saver();
- console.log(value1 === value2);
- 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;
- let namePrompt = prompt.bind(window, "Как тебя зовут?");
- let nameSaver = makeSaver(namePrompt);
- alert(`Привет! Prompt еще не было!`);
- alert(
- `Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`
- );
- alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`);
- // Final Countdown----------------------------------------------------------------------------------------------------------------------;
- const messages = [5, 4, 3, 2, 1, "Go"];
- for (let i = 0; i < messages.length; i++) {
- setTimeout(function () {
- console.log(messages[i]);
- }, 1000 * i);
- }
- // myBind-------------------------------------------------------------------------------------------------------------------------------;
- function myBind(func, context, bindArgs) {
- function wrapper() {
- var args = Object.assign(bindArgs, arguments);
- return func.apply(context, args);
- }
- return wrapper;
- }
- var pow5 = myBind(Math.pow, Math, [undefined, 5]);
- var cube = myBind(Math.pow, Math, [undefined, 3]);
- alert(pow5(2));
- alert(cube(3));
- var zeroPrompt = myBind(prompt, window, [undefined, "0"]);
- var someNumber = zeroPrompt("Введите число");
- alert(someNumber);
|