Как может работать эта рекурсивная функция для создания диапазона?

Из выбранного ответа в этом 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 . Кто-нибудь может это объяснить? Что мне не хватает?

6
задан Community 23 May 2017 в 10:34
поделиться