prefer-spread
Требовать использование оператора spread вместо .apply()
Перед ES2015 для вызова функций с переменным числом аргументов необходимо было использовать Function.prototype.apply()
var args = [1, 2, 3, 4];
Math.max.apply(Math, args);
В ES2015 можно использовать синтаксис spread для вызова функций с переменным числом аргументов.
var args = [1, 2, 3, 4];
Math.max(...args);
Подробности правила
Это правило предназначено для выявления использования Function.prototype.apply() в ситуациях, где можно использовать синтаксис spread.
Примеры
Примеры некорректного кода для этого правила:
/*eslint prefer-spread: "error"*/
;
;
;
Примеры корректного кода для этого правила:
/*eslint prefer-spread: "error"*/
// Using spread syntax
foo(...args);
obj.foo(...args);
// The `this` binding is different.
foo.apply(obj, args);
obj.foo.apply(null, args);
obj.foo.apply(otherObj, args);
// The argument list is not variadic.
// Those are warned by the `no-useless-call` rule.
foo.apply(undefined, [1, 2, 3]);
foo.apply(null, [1, 2, 3]);
obj.foo.apply(obj, [1, 2, 3]);
Известные ограничения:
Это правило анализирует код статически, чтобы проверить, изменена ли аргумент this. Таким образом, если аргумент this вычисляется в динамическом выражении, это правило не может обнаружить нарушение.
/*eslint prefer-spread: "error"*/
// This warns.
a[i++].foo.apply(a[i++], args);
// This does not warn.
a[++i].foo.apply(a[i], args);
Когда не использовать
Это правило не следует использовать в средах ES3/5.
В ES2015 (ES6) или более поздних версиях, если вы не хотите получать уведомления о Function.prototype.apply() вызовах, вы можете безопасно отключить это правило.
Связанные правила
Версия
Это правило было добавлено в ESLint v1.0.0-rc-1.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/prefer-spread