spread operator
(не путать с rest parameters
) действует аналогично apply()
.
Позволяет вам вызывать функцию, передающую аргументы массива как одно значение.
Взять например:
var myArray = [5, 10, 50];
Math.max(myArray); // Error: NaN
Math.max.apply(Math, myArray);
Метод Math.max()
не поддерживает массивы; он принимает только цифры. Когда массив передается в функцию Math.max (), он выдает ошибку. Но когда применяется метод apply (), массив отправляется как отдельные числа, поэтому метод Math.max () может его обработать.
С оператором распространения вам больше не нужно использовать метод apply()
, и вы можете легко расширить выражение на несколько аргументов:
var myArray = [5, 10, 50];
Math.max(...myArray); // 50
Легче писать, легче читать.
Какие существуют способы использования спреда (…) в Ecma 6?
Полезно для:
1. Объединение массивов
var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
arr1.push (... arr2)
2. Копирование массивов
Вместо использования slice ()
var arr1 = [1, 2, 3, 4, 5, 6];
var a = arr1.slice();
Вы могли бы:
var a = [...arr1]
3. Вызов функций вместо использования apply()
.. как показано выше.