После серии Spread Operator (Массивы и Объекты).
Сегодня мы поговорим об операторе Rest, в отличие от оператора спреда, который собирает все оставшиеся элементы в матрицу.
Например, у нас есть эта функция,
const multiply = (a, b) => { return a * b; } multiply(1,2) // 2
Пока все хорошо, но что происходит, когда мы передаем больше аргументов, чем принимаем функцию.
умножить (1,2,3), результатом всегда будет 2, потому что в Javascript мы можем вызывать функции с нужными нам элементами, но в этом случае будут учитываться только первые два элемента.
Вот и в игру вступает наш друг Rest Operator.
Мы можем переписать предыдущую функцию как
const multiply = (...args) => { let result = 1; for (let i in args) { result = result * args[i]; } return result; };
И теперь мы можем передать все аргументы, которые захотим.
multiply(1,2) // 2 multiply(2,2,2) // 8 multiply(3,2,1,2) // 12
Но у нас есть ограничения на использование, если у нас есть функция с большим количеством аргументов, например, оператор Rest всегда должен идти в последней позиции.
const multiply = (x,y,...args) => { console.log(x); console.log(y); let result = 1; for (let i in args) { result = result * args[i]; } return result; }; multiply(2,2,2) // 2 2 4 multiply(2,2,2,2) // 2 2 8
Большое спасибо и продолжайте кодировать!!!
Йоэль
Я часто делюсь советами по программированию в моем Instagram, вы можете поздороваться со мной в моем Twitterили посмотреть, как я программирую в моем Гитхаб.