LoginSignup
2
3

More than 5 years have passed since last update.

[ES2015(ES6)] Spread operator `...`(スプレッド演算子)とは

Posted at

定義(Definition)

複数の引数 (関数呼び出しのため) または複数の要素 (配列リテラルのため)、あるいは複数の値 (分割代入のため) が置かれるところで式が展開されます。

簡単に言うと、 配列とかを文脈に合わせて 展開してくれるようなイメージです。

構文(Syntax)

1. 関数の呼び出しに対して:

myFunction(...iterableObj);

使用例1:

function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction(...args);

使用例2:

function myFunction(v, w, x, y, z) { }
var args = [0, 1];
myFunction(-1, ...args, 2, ...[3]);

2. 配列リテラルに対して:

[...iterableObj, 4, 5, 6]

使用例:

var parts = ['shoulder', 'knees'];
var lyrics = ['head', ...parts, 'and', 'toes']; // ["head", "shoulders", "knees", "and", "toes"]

3.分割代入に対して:

[a, b, ...iterableObj] = [1, 2, 3, 4, 5];

ブラウザの実装状況(2017.11.29時点)

デスクトップ

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
配列リテラルでのスプレッド演算 46 16 (16) Edge 未サポート 7.1
関数呼び出しでのスプレッド演算 46 27 (27) Edge 未サポート 7.1
分割代入でのスプレッド演算 49 34 (34) 未サポート ? ?

モバイル

機能 Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
配列リテラルでのスプレッド演算 未サポート 46 16.0 (16) 未サポート 未サポート 8 46
関数呼び出しでのスプレッド演算 未サポート 46 27.0 (27) 未サポート 未サポート 8 46
分割代入でのスプレッド演算 未サポート 未サポート 34 (34) ? ? ? 未サポート

対応状況を見ると、 3.分割代入 構文はまだ使わない方が良いでしょう。

参考

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3