123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- // Замыкания
- // let button1 = document.createElement("button");
- // button1.id = "first";
- // button1.innerText = "0";
- // document.body.appendChild(button1);
- // let button2 = document.createElement("button");
- // button2.id = "second";
- // button2.innerText = "0";
- // document.body.appendChild(button2);
- // function clickCounter(element) {
- // let counter = 0;
- // element.onclick = function () {
- // element.innerText = ++counter;
- // };
- // }
- // clickCounter(button1);
- // clickCounter(button2);
- // Замыкания ДЗ
- // makeProfileTimer
- // function makeProfileTimer() {
- // let time1 = performance.now();
- // return function () {
- // let time2 = performance.now();
- // return time2 - time1;
- // };
- // }
- // let timer = makeProfileTimer();
- // alert("Замеряем время работы этого alert");
- // alert(`Время выполнения: ${timer().toFixed(3)} микросекунд`);
- // makeSaver
- // function makeSaver(func) {
- // let saver = func();
- // return () => saver;
- // }
- // let saver = makeSaver(Math.random);
- // let value1 = saver();
- // let value2 = saver();
- // console.log(value1 === value2);
- // let saver2 = makeSaver(
- // () =>
- // console.log("saved function called") ||
- // [null, undefined, false, "", 0, Math.random()][Math.ceil(Math.random() * 6)]
- // );
- // let value3 = saver2();
- // let value4 = saver2();
- // console.log(value3 === value4);
- // let namePrompt = prompt.bind(window, "Как тебя зовут?");
- // let nameSaver = makeSaver(namePrompt);
- // alert(`Привет! Prompt еще не было!`);
- // alert(
- // `Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`
- // );
- // alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`);
- // Final Countdown
- // (function () {
- // let countdown = 5;
- // function timer() {
- // console.log(countdown--);
- // if (countdown === 0) {
- // clearInterval(time);
- // console.log("Поехали!");
- // }
- // }
- // let time = setInterval(timer, 1000);
- // })();
- // myBind
- // function myBind(f, ctx, bind) {
- // function wrapper(...args) {
- // let count = 0;
- // const result = bind.map((index) =>
- // index === undefined ? args[count++] : index
- // );
- // return f.apply(ctx, result);
- // }
- // return wrapper;
- // }
- // let pow5 = myBind(Math.pow, Math, [undefined, 5]); // первый параметр - функция для биндинга значений по умолчанию,
- // // второй - this для этой функции, третий - массив, в котором undefined означает
- // // параметры, которые должны передаваться при вызове,
- // // а другие значения являются значениями по умолчанию:
- // let cube = myBind(Math.pow, Math, [undefined, 3]); // cube возводит число в куб
- // pow5(2); // => 32, вызывает Math.pow(2,5), соотнесите с [undefined, 5]
- // cube(3); // => 27
- // let chessMin = myBind(Math.min, Math, [
- // undefined,
- // 4,
- // undefined,
- // 5,
- // undefined,
- // 8,
- // undefined,
- // 9,
- // ]);
- // console.log(chessMin(-1, -5, 3, 15)); // вызывает Math.min(-1, 4, -5, 5, 3, 8, 15, 9), результат -5
- // let zeroPrompt = myBind(prompt, window, [undefined, "0"]); // аналогично, только теперь задается "0" как текст по умолчанию в prompt,
- // // а текст приглашения пользователя задается при вызове zeroPrompt
- // let someNumber = zeroPrompt("Введите число"); // вызывает prompt("Введите число","0")
- // console.log(
- // myBind((...params) => params.join(""), null, [
- // undefined,
- // "b",
- // undefined,
- // undefined,
- // "e",
- // "f",
- // ])("a", "c", "d") // ???
- // );
- // Multiplication table with closure
- // let table = document.createElement("table");
- // table.setAttribute("border", "1");
- // let tbdy = document.createElement("tbody");
- // let tr = document.createElement("tr");
- // for (let h = 0; h < 10; h++) {
- // let th = document.createElement("th");
- // th.innerText = h;
- // tr.appendChild(th);
- // tbdy.appendChild(tr);
- // }
- // for (let i = 1; i < 10; i++) {
- // let tr = document.createElement("tr");
- // let td = document.createElement("td");
- // td.innerText = i;
- // tr.appendChild(td);
- // for (let j = 1; j < 10; j++) {
- // let td = document.createElement("td");
- // td.innerText = i * j;
- // tr.appendChild(td);
- // }
- // tbdy.appendChild(tr);
- // }
- // table.appendChild(tbdy);
- // document.body.appendChild(table);
- // let readyTable = document.querySelector("table");
- // function changeBg(event, cellColor, rowColor) {
- // const target = event.target;
- // const index = event.srcElement.cellIndex;
- // const rows = document.querySelectorAll("tr");
- // function changeColor() {
- // try {
- // target.parentNode.style.background = rowColor;
- // for (let i = 0; i < rows.length; i++) {
- // rows[i].childNodes[index].style.background = rowColor;
- // target.style.background = cellColor;
- // }
- // } catch (e) {}
- // }
- // changeColor();
- // }
- // readyTable.onmouseover = (event) => changeBg(event, "yellow", "pink");
- // readyTable.onmouseout = (event) => changeBg(event, "", "");
|