123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- // Таблица, замыкание
- let table = document.createElement('table')
- for (let rowIndex = 0; rowIndex <= 10; rowIndex++) {
- let tr = document.createElement('tr')
- rowIndex % 2 === 0 ? tr.className = "tr-odd" : tr.className = "tr-even"
- table.append(tr)
- if (rowIndex === 0) {
- for (let t = 0; t <= 10; t++) {
- let th = document.createElement('th')
- th.className = 'th'
- th.innerText = t
- tr.append(th)
- }
- } else {
- for (let colIndex = 0; colIndex <= 10; colIndex++) {
- let td = document.createElement('td')
- td.onmousemove = function () {
- [...tr.parentElement.children].map(t => t.children[colIndex].style.backgroundColor = '#9e90ff')
- td.parentElement.style.backgroundColor = '#9e90ff';
- td.style.backgroundColor = 'red'
- }
- td.onmouseout = function () {
- [...tr.parentElement.children].map(t => t.children[colIndex].style.backgroundColor = '')
- td.style.backgroundColor = ''
- td.parentElement.style.backgroundColor = ''
- }
- if (colIndex === 0) {
- let th = document.createElement('th')
- th.className = 'th'
- th.innerText = (rowIndex) * (colIndex + 1)
- tr.append(th)
- } else if (colIndex === rowIndex) {
- td.className = 'tdtd'
- td.innerText = (rowIndex) * (colIndex)
- tr.append(td)
- } else {
- td.innerText = (rowIndex) * (colIndex)
- tr.append(td)
- }
- }
- }
- }
- root.append(table)
- //makeProfileTimer
- function makeProfileTimer() {
- let t0 = performance.now();
- return function () {
- let t1 = performance.now();
- return t1 - t0
- }
- }
- let timer = makeProfileTimer()
- alert('Замеряем время работы этого alert')
- alert(timer())
- //makeSaver
- function makeSaver(param) {
- let res;
- let flag = false;
- return function () {
- flag ? res : (flag = true, res = param());
- }
- };
- 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);
- //Final Countdown
- (function () {
- let seconds = 5
- for (let i = 0; i <= seconds; i++) {
- setTimeout(() => {
- !seconds ? console.log('поехали!') : console.log(seconds--);
- }, 1000 * i);
- }
- }())
- //myBind
- function myBind(f, method, arr) {
- debugger
- return function (...params) {
- debugger
- let countIndex = 0
- let newArr = arr.map(i => i !== undefined ? i : params[countIndex++])
- return f.apply(method, newArr)
- }
- }
- // var pow5 = myBind(Math.pow, Math, [undefined, 5])
- // pow5(2)
- // var cube = myBind(Math.pow, Math, [undefined, 3])
- // cube(3)
- // var chessMin = myBind(Math.min, Math, [undefined, 4, undefined, 5, undefined, 8, undefined, 9])
- // chessMin(-1, -5, 3, 15)
- // var zeroPrompt = myBind(prompt, window, [undefined, "0"])
- // var someNumber = zeroPrompt("Введите число")
- myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a', 'c', 'd') === 'abcdef'
|