postech
@postech
программист

Почему функция JS так странно себя ведет?

Добрый день.

Столкнулся со странным поведением функции (возможно, из-за недостатка знаний), прошу помочь.

function user_list_product_count(id) {
    // получаем количество товара в списке пользователя
    let temp = localStorage.getItem('user_list');
    if((typeof temp !== 'undefined') && (temp !== null) && (temp.length > 0)) {
        temp = JSON.parse(temp);        // разобрали по строкам
        temp.forEach(function(item, index) {
            item = JSON.parse(item);
            console.log('id = ' + id + ' item._source.product_id = ' + item._source.product_id)
            if(item._source.product_id == id) {
                console.log('Нашли, количество: ' + item.quantity);
                console.log(item.quantity)
                return item.quantity;
            }
        });
    }
}


так вот: условие отрабатывает, console.log(item.quantity) выводит число, но функция возвращает undefined.
Пример: если item.quantity = 3, то почему функция по команде "return item.quantity" возвращает undefined вместо 3?

Почему так может быть?
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
Какая функция? Попробуйте ответить на этот вопрос, не читая дальше и вы все поймете.

Если не понятно - читайте дальше:

Очевидно вы про функцию user_list_product_count, которая у вас ничего не возвращает - вот вы и получаете undefined. Где return-то в функции?

Если же вы про return item.quantity;, то он из анонимной фукнции внутри forEach вполне себе возвращает число. Только ведь вы его никуда не читаете...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы