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?

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

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

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

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

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

Похожие вопросы