.apply
часто используется, когда намерение состоит в том, чтобы вызвать переменную функцию со списком значений аргумента, например,
Функция Math.max([value1[,value2, ...]])
возвращает наибольшее из нуля или более чисел.
Math.max(10, 20); // 20
Math.max(-10, -20); // -10
Math.max(-10, 20); // 20
Метод Math.max()
не позволяет передавать массив. Если у вас есть список значений, из которых вам нужно получить наибольшее, вы обычно вызываете эту функцию, используя Function.prototype.apply () , например,
Math.max.apply(null, [10, 20]); // 20
Math.max.apply(null, [-10, -20]); // -10
Math.max.apply(null, [-10, 20]); // 20
Однако, начиная с ECMAScript 6, вы можете использовать оператор распространения :
Оператор распространения позволяет расширять выражение в местах, где ожидаются несколько аргументов (для вызовов функций) или несколько элементов (для литералов массива).
Math.max(...[10, 20]); // 20
Math.max(...[-10, -20]); // -10
Math.max(...[-10, 20]); // 20
При вызове функции с помощью оператора переменной можно даже добавить дополнительные значения, например,
Math.max(...[10, 20], 50); // 50
Math.max(...[-10, -20], 50); // 50