Почему функции стрелок не имеют массив аргументов?
function foo(x) {
console.log(arguments)
} //foo(1) prints [1]
но
var bar = x => console.log(arguments)
дает следующую ошибку при вызове таким же образом:
Uncaught ReferenceError: arguments is not defined
Ответ 1
Функции стрелок не имеют этого, так как объект массива arguments для начала был обходным путем, который ES6 решил с помощью параметра rest:
var bar = (...arguments) => console.log(arguments);
arguments ни в коем случае не зарезервированы здесь, но просто выбраны. Вы можете называть это как хотите, и это можно комбинировать с обычными параметрами:
var test = (one, two, ...rest) => [one, two, rest];
Вы даже можете пойти другим путем, проиллюстрированным этой причудливой заявкой: