расчёт на то, что изначально
let input; // undefined
что уже есть условие входа в цикл
далее пользователь что-то вводит
(особо не заморачиваясь, допустим он может вводить или числа или строки)
если ввёл строку, то сработает условие
isNaN(input) и опять перезапросит ввод
и так пока не будет число на вход
А, да... Ну, а зачем проверять на undefined? Это условие проверится ровно один раз в начале программы