Потому что someLength меньше, чем num.
Таким образом, цикл начинается с i = num
, но не проходит первую проверку на i <= someLength
, в итоге в цикле ноль итераций, в результате которых в массив ничего не добавляется.
При этом i не равно undefined, оно равно именно num, но только в пределах цикла, который закончился сразу после того, как начался. А затем переменная i перестает существовать с точки зрения языка.
К слову, если сделать someArr.push(undefined)
, то длина массива изменится. Так что в отсутствии работы цикла легко убедиться, проверив, что someArr.length === 0