@k8tus

Как работает вот это место: [...rangeOfNumbers(startNum, endNum — 1), endNum]?

Помогите, пожалуйста, понять, что значит одно место в таком коде:

function rangeOfNumbers(startNum, endNum) {
return startNum === endNum ? [startNum]
: [...rangeOfNumbers(startNum, endNum - 1), endNum];
};

console.log(rangeOfNumbers(2,12))

Получается массив значений в указанном диапазоне: [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ]
Я нашёл, что это называется спред, но что происходит у него в круглых скобках, и зачем ему конечное значение в конце? Большое спасибо, если кто-то поможет!
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 2
fomenkogregory
@fomenkogregory
Юниор софтварный инженер
Функция вызывает себя рекурсивно до тех пор, пока значения start и end не станут равны
https://learn.javascript.ru/recursion
https://learn.javascript.ru/destructuring-assignment
Ответ написан
Комментировать
@vladdimir
Верстальщик
[...rangeOfNumbers(startNum, endNum), endNum];
этот код ставит последним элементом массива endNum, а перед ним разворачивает рекурсивные вызовы самой себя. Три точки просто разворачивают массив, который возврашает функция.
const arr1 = [1,2]

const arr2 = [ ...arr1, 3,4] // [1,2,3,4]

C пониманием тернарного оператора, так понимаю все норм?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы