7.14Functions / Spread Syntax

可変長引数関数にはスプレッド構文

可変長引数の関数を呼び出すには、`apply`よりもスプレッド構文 `...` を使用します。コードがクリーンになり、コンテキストを指定する必要もありません。

`Function.prototype.apply()` は、`this` のコンテキストを第一引数として指定する必要があり、冗長になりがちです。スプレッド構文を使えば、配列を自然な形で関数の引数リストに展開でき、`this` のコンテキストを気にする必要もありません。特に `new` との組み合わせで `apply` を使うのは非常に複雑ですが、スプレッド構文なら `new Date(...[2016, 8, 5])` のように直感的に書けます。

❌ Bad
// bad
const x = [1, 2, 3, 4, 5];
console.log.apply(console, x);
✅ Good
// good
const x = [1, 2, 3, 4, 5];
console.log(...x);