1. ホーム
  2. javascript

[解決済み] arrow関数に引数配列がないのはなぜですか?重複

2022-10-28 01:29:31

質問

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

しかし

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

は、同じように起動すると以下のようなエラーが発生します。

Uncaught ReferenceError: arguments is not defined

どのように解決するのですか?

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

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

arguments は、決してここで予約されているわけではなく、ただ選ばれているだけです。呼び方は自由で、通常のパラメータと組み合わせることも可能です。

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

この派手なアプリケーションで説明されているように、他の方法にも行くことができます。

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