web-dev-qa-db-ja.com

矢印関数に引数配列がないのはなぜですか?

function foo(x) {
   console.log(arguments)
} //foo(1) prints [1]

しかし

var bar = x => console.log(arguments) 

同じ方法で呼び出されると、次のエラーが発生します。

Uncaught ReferenceError: arguments is not defined
55
Conqueror

矢印関数には、arguments配列のようなオブジェクトがそもそも回避策であったため、これはありません。ES6はrestパラメーターで解決しました。

var bar = (...arguments) => console.log(arguments);

argumentsはここでは決して予約されておらず、選択されただけです。好きなように呼び出すことができ、通常のパラメーターと組み合わせることができます。

var test = (one, two, ...rest) => [one, two, rest];

この空想によって示されるように、あなたは他の方法に行くことさえできます:

var fapply = (fun, args) => fun(...args);
101
Sylwester