@AlexNew22

Почему i возвращает странное значение после цикла?

Как работает этот код?
let i = 10, arr = [];
while (i--) {
    arr.push(() => i + i);  
}
console.log([arr[0](), arr[0]()])

Мне казалось, что первое значение i будет равно 10, т.к. у нас i--, а не --i
Мой ответ был (даже с учетом, что я знал бы, что первое i будет 9) -> [18, 0]
Где я потерялся в логике работы кода?
  • Вопрос задан
  • 171 просмотр
Решения вопроса 2
black1277
@black1277
Вольный стрелок
while исполняется до тех пор, пока условие не станет ложным, а это произойдет когда i станет равным -1. Далее в консольлоге вызываете функцию у которой в выражении используется глобальная переменная i. А она уже стала равной -1. Вот и результат -1 + -1 = -2
Ответ написан
TheSnegok
@TheSnegok
let i = 10, arr = [];
while (i--) {
    arr.push(() => i + i);  
}
console.log([arr[0](), arr[0]()])

У тебя в while стоит условие i--, цикл while работает до тех пор пока его условие не будет false, вот он тебе и выводит -2(не понимаю зачем ты одно и тоже два раза выводишь, это не двумерный массив), и ещё не обязательно кидать внутрь функцию, а потом использовать её, вот маленький пример:
let i = 10, arr = [];
while (i > 8) {//тут в () вводим условие например при i > 8, тогда останавливаемся выведет 10, 9
    arr.push(i);// закидываем в массив число которое сейчас в цикле в массив 
    i--;// и уменьшаем наше число для цикла на 1
}
console.log(arr);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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