if(links.every(link => isVisited(link))) {
unblockSpecialLink();
}
(async () => {
const result = await {
then(resolve) {
console.log('Привет сахар');
setTimeout(() => resolve(10), 3000);
}
};
console.log('Ух ты, данные из таймера:', result);
})();
(async () => {
try {
await {
then(_, reject) {
console.log('Привет сахар');
reject(new Error('Ошибочка'));
}
};
console.log('Это никогда не выполнится');
} catch (e) {
console.log('Ух ты, эксепшн:', e);
}
})();
console.log('Промисы никуда не делись?', (async () => {})() instanceof Promise)
-1 ? 1 : 2
значение -1 приводится к типу boolean и получается true-1 == true
значение true приводится к числу и получается 1===
и !==
) и приводить типы явно function formatDate(str) {
const d = new Date(str.replace('_', ' 1, '));
d.setMonth(d.getMonth() - 1);
return d.toLocaleDateString('en-US', {
month: 'short',
year: 'numeric',
}).replace(' ', '_');
}
formatDate('Feb_2021') // "Jan_2021"
formatDate('Jan_2000') // "Dec_1999"
this.setState(({ items }) => ({
items: items.map((n, i) => ({ ...n, id: i })),
}));
state = {
items: this.props.items.map((n, i) => ({ ...n, id: i })),
}
[1, 2, 3, 4, 5].sort((a, b) => b % 2 - a % 2 || (a % 2 ? b - a : a - b))
document.write
очень легко гуглится почемуlet, var, const
===
*, *::after, *::before {
margin: 0;
padding: 0;
box-sizing: border-box;
}
const wrappers = document.querySelectorAll('.how_it_works');
const svgLine = document.querySelector('#svg-line');
const line12 = svgLine.querySelector('.line-1-2');
const line23 = svgLine.querySelector('.line-2-3');
const line34 = svgLine.querySelector('.line-3-4');
const line45 = svgLine.querySelector('.line-4-5');
const setAttributes = (element, attrs) => {
for (const attr in attrs) {
element.setAttribute(attr, attrs[attr]);
}
};
const line = (wrapper) => {
const wrapperBox = wrapper.getBoundingClientRect();
const items = wrapper.querySelectorAll('.block_line .item');
const points = [];
for (const item of items) {
const element = item.querySelector('.num');
const box = element.getBoundingClientRect();
points.push({
x: box.left + box.width / 2 - wrapperBox.left,
y: box.top + box.height / 2 - wrapperBox.top
});
}
svgLine.style.setProperty('top', 0);
svgLine.style.setProperty('left', 0);
setAttributes(line12, {
x1: points[0].x,
y1: points[0].y,
x2: points[1].x,
y2: points[1].y
});
setAttributes(line12, {
x1: points[1].x,
y1: points[1].y,
x2: points[2].x,
y2: points[2].y
});
setAttributes(line12, {
x1: points[2].x,
y1: points[2].y,
x2: points[3].x,
y2: points[3].y
});
setAttributes(line12, {
x1: points[3].x,
y1: points[3].y,
x2: points[4].x,
y2: points[4].y
});
};
const start = () => {
for (const wrapper of wrappers) {
line(wrapper);
}
};
start();
window.addEventListener('resize', start);
this.getRandomZ() не вычисляется
const getRandomPolynom = () => {
const [ A, B, C, D ] = Array.from({ length: 4 }, this.getRandomZ);
return x => A * x ** 4 + B * x ** 3 - C * x ** 2 - D * x + 10;
};