Из выбранного ответа в этом SO-вопросе эта очень оригинальная функция создает массив с диапазоном от 1 до i:
function range1(i){return i?range1(i-1).concat(i):[]}
Она отлично работает. Назовите меня глупым, но я просто не могу понять , как это работает. Допустим, у нас есть диапазон1 (5)
. Теперь, войдя в функцию, мы имеем i
, поэтому она возвращает себя с параметром i-1
(4) и concats i
(5) к нему. Но здесь я застрял: откуда range1
знает , что он имеет отношение к массиву? Я бы сказал, что после первого запуска возвращаемое значение (если у нас есть i
, поэтому i! == 0
) будет числом. И Number не имеет метода concat
. Кто-нибудь может это объяснить? Что мне не хватает?