После прохода switch, console.log выдаёт undefined. Что не так?

const getPriceOfSelect = () => {

    switch (valueOfSelect) {
        case 10:
            priceOfMovie = 10;
            return priceOfMovie;
            break;
        case 12:
            priceOfMovie = 12;
            return priceOfMovie;
            break;
        case 8:
            priceOfMovie = 8;
            return priceOfMovie;
            break;
        case 9:
            priceOfMovie = 9;
            return priceOfMovie;
            break;
        default:
            return alert( "Нет таких значений" );
    }
} 

const changeStyleOfPlace = (getElementFromArray, priceOfMovie) => {

    if (getElementFromArray.currentTarget.className == "row__place") {
        getElementFromArray.currentTarget.className = "row__selected";
        document.querySelector(".text__total").innerHTML += priceOfMovie;
    }
    else {
        getElementFromArray.currentTarget.className = "row__place";
    }
}

document.querySelector(".select").addEventListener('change', function() {
  let valueOfSelect = Number(this.value);
});
document.addEventListener('DOMContentLoaded', () => {
  let valueOfSelect = Number(document.querySelector(".select").value);
});

Ответы (1 шт):

Автор решения: Igor

Никакого "прохода switch" в коде нет, так как getPriceOfSelect не вызывается.


Формальный параметр priceOfMovie функции changeStyleOfPlace не имеет отношения к внешней переменной priceOfMovie, если только эта переменная не используется в качестве второго параметра в вызове changeStyleOfPlace.


Локальная переменная valueOfSelect не видна снаружи тех функций, где она объявлена. Таким образом, значение valueOfSelect в switch (valueOfSelect) { не определено.

let valueOfSelect;

document.querySelector(".select").addEventListener('change', function() {
  valueOfSelect = Number(this.value);
});
document.addEventListener('DOMContentLoaded', () => {
  valueOfSelect = Number(document.querySelector(".select").value);
});
→ Ссылка