Т.е. операции по типу [[...arr], value] так же сработают по скорости и логике, как arr.push(value)?
$("prev").addEventListener("click", prevMonth, false);
$("next").addEventListener("click", nextMonth, false);
$("next")
- Это что такое? Если следовать правилам, то это "next" это селектор по тэгу. Такого тега не существует.if (current_tier_num === "1") {
$('#current-lp-1').hide();
$('#current-lp-3').show(); // добавил от себя, т.к. это будто бы какой то переключатель
$('#current-lp-4').show(); // и Вы не учли что может быть переключение с 2 на 1
} else if (current_tier_num === "2") {
$('#current-lp-3').hide();
$('#current-lp-4').hide();
$('#current-lp-1').show(); // аналогично предыдущему комменатрию
} else {
$('#current-lp-1').show();
$('#current-lp-2').show();
$('#current-lp-3').show();
$('#current-lp-4').show();
$('#current-lp-5').show();
}
// В первой строчке 3 шага
// 1) Создался новый массив
// 2) Создался новый объект {x:1}, и ссылка на него легла в первый элемент массива из шага 1.
// 3) В переменную "const c" положилась ссылка на массив из шага 1.
const c = [{x:1}]
// Вторая строчка так же содержит 3 шага
// 4) Создаётся новый массив
// 5) По ссылке массив "с" спрэдится. Т.о. первым элементом нового массива становится ссылка на объект из шага 2.
// 6) Ссылка на новый массив но со "старым" объектом кладётся в переменную "d"
const d = [...c]
// Третья упрощённо имеет 1 шаг
// 7) в массив из переменной с именем "c" в первый элемент кладётся новое значение. Причём совершенно не важно какое.
c[0]=100;
c
в элементе с индексом 0 у нас число, а в массиве b
в элементе с индексом 0 у нас ссылка на объект созданный на втором шаге. Разве мы можем использовать скрипт до того, как добавили его в HTML-документ
Window
или с use strict
- undefined
.block.innerHTML = '<span>' + this.value.slice(12) + '</span>'
// Или через шаблонную строку:
block.innerHTML = `<span> ${ this.value.slice(12) } </span>`;
// Или через создание нового html элемента явно:
const span = document.createElement('span');
span.textContent = this.value.slice(12);
block.append(span);
</>
.if (isHorizontal) {
if (randomStartIndex <= width * width - ship.length) {
randomStartIndex
} else {
width * width - ship.length
}
} else {
if (randomStartIndex <= width * width - width * ship.length) {
randomStartIndex
} else {
randomStartIndex - ship.length * width + width
}
}
transform: rotate(-90deg)
function createCounter() {
let counter =0;
counter = counter - 10
const myFunction = function () {
counter = counter+1;
return counter
}
return myFunction
}
let z = createCounter() // Вернули в переменную z функцию "myFunction" у которой в замыкании есть counter.
// counter внутри на данный момент равен -10.
// Вызвали функцию и вывели результат в консоль.
// Так как внутри функции counter берётся из замыкания, то при вызове функции получаем
// -10 + 1
console.log(z()) // -9
// В данном примере - бесполезный ничего не делающий вызов.
// То есть создаётся ещё один НОВЫЙ счётчик, со своим замыканием, но он никуда не сохраняется.
createCounter()
// Снова вызвали функцию и вывели результат в консоль.
// -9 + 1
console.log(z()) // -8
где я допускаю ошибку
Второй вопрос откуда берется counter при втором вызове console.log(z())
style.display = none,
из-за того что x.style.display === ""
а не 'none'
то есть идёт по ветке else, а потом уже работает как "предполагалось".<element style="display: none">