@Alex_mersvg

Почему функция возвращает undefined?

let arr = [1,1,1,1,1,2,3,4,1,2,3,4,2,3];
function nam(val){
    let array= val;
    let res = [];

    for(let i = 0; i < array.length; i++){
        if(res.includes(array[i]) ) return
        res.push(array[i])
    }

    return res;
}
nam(arr);


как ее написать правильно я знаю, но почему именно эта запись возвращает undefined? Идет же проверка, "если массив содержит елемент Х, то перейти к след. итерации. Но по логике если условие дает false, то цикл должен пойти дальше и добавить элемент в массив?"
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
dollar
@dollar
На чёткий вопрос - чёткий ответ.
Потому что перевод строки после return движок JS воспринимает как границу между операторами. Как будто там точка с запятой.
Если записать в одну строчку, то не будет undefined:
if(res.includes(array[i]) ) return res.push(array[i])


Ну а так, в целом, return здесь вовсе не нужен.
Ведь return - это выход из функции.
А вам нужен выход из текущей итерации цикла - это continue.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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