effect_tw
@effect_tw

Почему i = undefiend. В Функции условие if, в условии цикл for?

Почему i = undefiend , хотя num которая пришла в функцию, внутри цикла имеет свое нормальное значение равное 10(например).

let someArr = [];
let someFunc=(num)=>{
    if(num>10){
        for(let i = num; i <= someLength; i++){
            someArr.push(i);
        }
    }
};
даже если привязать к новой переменной до цикла. то же самое

let someArr = [];
let someFunc=(num)=>{
    let saveNum = num;
    if(saveNum>10){
        for(let i = saveNum; i <= someLength; i++){
            someArr.push(i);
        }
    }
};
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Потому что someLength меньше, чем num.
Таким образом, цикл начинается с i = num, но не проходит первую проверку на i <= someLength, в итоге в цикле ноль итераций, в результате которых в массив ничего не добавляется.

При этом i не равно undefined, оно равно именно num, но только в пределах цикла, который закончился сразу после того, как начался. А затем переменная i перестает существовать с точки зрения языка.

К слову, если сделать someArr.push(undefined), то длина массива изменится. Так что в отсутствии работы цикла легко убедиться, проверив, что someArr.length === 0
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
GrenadinGran
@GrenadinGran
Помог ответ - отметь решением
Вы в num ничего не передаете, поэтому и undefined, и someLength нигде не определена
Ответ написан
Ваш ответ на вопрос

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

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