return
. function getTrue() {
return true // явный возврат true
}
getTrue() // true
const getFalse = () => {
return false // явный возврат false из стрелочной функции
}
getFalse() // false
=>
. Если стрелочная функция с описанным в фигурных скобках телом функции, то так же как и для обычной функции. Если нет return, то undefined.function getUndefined() {
// какой то код, но нет return.
console.log('Я тут что-то делаю, не обращайте внимания.')
}
getUndefined() // undefined
const getArrowValue = () => 'неявный'
getArrowValue() // "неявный"
И для чего этоЕсли честно даже не знаю что на это ответить. Чтоб было. Ну вот есть такие вот варианты и всё. Ну неявный в стрелочной чтоб было короче разве что.
function conditionalReturn(value) {
if (value === 1) {
return 'one'
}
if (value === 2) {
return 'two'
}
}
conditionalReturn(1) // явно вернёт one
conditionalReturn(2) // явно вернёт two
conditionalReturn(3) // не явно вернёт undefined
async
, в неявном виде всегда возвращает Promise
, даже если используется ключевое слово return - то значение после return будет обёрнуто в промис. document.querySelector('[data-tab="tab-1"]').classList.add('accordion__title-active');
[data-tab="tab-1"] - нет такого элемента. Скрипт падает с ошибкой.document.querySelector('#tab-1')
аналогично, #tab-1 - нет такого элемента.Чем отличается событие клика от button.click()
button.click()
- программный тригер клика на кнопке без участия пользователя. То есть клик из под скрипта.Как вообще сформулировать гуглу запрос на эту тему, что бы статью какую-то почитать
"2023-02-01 13:00:00".split(' ')[0].split('-')[2] // 01
// или
"2023-02-01 13:00:00".match(/\d{4}-\d{2}-(\d{2})\s\d{2}:\d{2}:\d{2}/)[1] // 01
// или
"2023-02-01 13:00:00".replace(/\d{4}-\d{2}-(\d{2})\s\d{2}:\d{2}:\d{2}/, '$1') // 01
// или
new Date("2023-02-01 13:00:00").getDate() // 1
// или
new Date("2023-02-01 13:00:00").getDate().toString().padStart(2,0) // 01
const index = 2
const items = document.querySelector(`.parent .child:nth-child(${index})`)
// или
const items = document.querySelectorAll('.parent .child')
const thirdItem = items[index]
let head = document.getElementsByTagName('head')[0];
let styleR = document.createElement('style');
head.appendChild(styleR);
styleR.innerHTML =
'.amber-button_theme_accent { background-color: #FA8072 !important; }';
head.appendChild(styleR);
<label for="trigger">Пробег</label>
<strong>Выбрать</strong>
<input type="checkbox" id="trigger">
#trigger:checked ~ .prcr {
/* .pro:hover .prcr { */
display: block;
opacity: 1;
visibility: visible;
-webkit-transition-delay: 0s;
transition-delay: 0s;
}
После этого и срабатывает этот блок success. где отрисовывается новый блок.
document.getElementById('client-personal-note-container').innerHTML += appendNotemakrup;
select.addEventListener('change', function () {
formValidation(form);
console.log(errors);
ine.innerHTML = errors;
});
formValidation
.console.log(errors)
- errors не существует в данной области видимости. Функции возвращают значение, которое хранится в переменной, а не переменную с её названием в область видимости, где функция была вызвана.select.addEventListener('change', function () {
const errors = formValidation(form);
console.log(errors);
ine.innerHTML = errors;
});
if (parseInt(number.innerHTML) == 0){
let step = 3;
} else {
let step = parseInt(number.innerHTML) - 1;
}
Псевдоселекторыпсевдоэлементы типа :before
const out = items.reduce((acc, {id, price}) => {
const key = obj[id]
if (key) { // проверяем что элемент с таким id нас вообще интересует
if (acc[key]) { // если он встречался ранее, то добавляем к текущему значению
acc[key] += price
} else { // иначе запоминаем с текущей ценой
acc[key] = price
}
acc.total += price // и всегда добавляем к total
}
return acc
}, { total: 0 })
let slider = document.querySelector('.container-3_1');
let innerSlider = document.querySelector('.container-3-1_blocks');
let pressed = false;
let startx;
let x;
slider.addEventListener('mousedown', (e)=> {
pressed = true;
startx = e.offsetX- innerSlider.offsetLeft;
slider.style.cursor = 'grabbing'
})
slider.addEventListener('touchstart', (e)=> {
pressed = true;
const evt = e.touches[0]
startx = evt.clientX- innerSlider.offsetLeft;
slider.style.cursor = 'grabbing'
})
slider.addEventListener('mouseenter', ()=> {
slider.style.cursor = 'grab'
})
slider.addEventListener('mouseup', ()=> {
pressed = false;
slider.style.cursor = 'grab'
})
slider.addEventListener('touchend', ()=> {
pressed = false;
slider.style.cursor = 'grab'
})
slider.addEventListener('mousemove', (e)=> {
if(!pressed) return;
e.preventDefault();
x = e.offsetX;
innerSlider.style.left = `${x - startx}px`
checkboundary()
})
slider.addEventListener('touchmove', (e)=> {
if(!pressed) return;
e.preventDefault();
const evt = e.touches[0]
x = evt.clientX;
innerSlider.style.left = `${x - startx}px`
checkboundary()
})
function checkboundary(){
let outer = slider.getBoundingClientRect();
let inner = innerSlider.getBoundingClientRect();
if(parseInt(innerSlider.style.left) > 0) {
innerSlider.style.left = '0px'
} else if (inner.right < outer.right){
innerSlider.style.left = `-${inner.width - outer.width}px`
}
}
Возвращаемое значение
Массив, содержащий удалённые элементы.
return [].splice()
возвращает массив из элементов, которые были удалены.arrayTaskOne
, объявленный вне функции, изменился, а это не хорошо.