分割代入

javascript

概要

分割代入について試してみます。
分割代入は、配列やオブジェクトを、1つまたは複数の変数に一度に代入します。
具体的には次のように書きます。

let [a, b, c] = [10, 20, 30];

console.log(a);
console.log(b);
console.log(c);

出力結果は

10
20
30

となります。

分割代入は、配列形式等の値を一度に代入が可能なので、等号記号「=」の左辺に配列を指定すると効果的です。

上記の例に少し手を加えてみます。

let [a, b, c] = [10, 20, 30];

//配列を分割代入を利用して、順序を変更して代入する
[a, b, c] = [b, a, c];

console.log(a);
console.log(b);
console.log(c);

この場合、出力結果は

20
10
30

になります。
見ての通りシンプルな動きになります。

次に、結果を配列で返す形にして、関数の戻り値を分割代入するサンプルを書いてみます。

function test1(x, y) {

	//引数を加算して配列で返す
	x = x + 100;
	y = y + 200;

	return [x, y];
}

let [d, e] = test1(10, 20)

console.log(d);
console.log(e);

出力結果は

110
220

になります。
配列で分割代入されていることがわかります。

代入する値の数が異なる場合

上記のサンプルでは、等号記号の左辺と右辺は同じ数でした。
では、代入する要素数が異なる場合はどのような挙動になるのか、試してみます。

//右辺が左辺よりも少ない場合
let [g, h, i] = [10, 20];

console.log(g);
console.log(h);
console.log(i);

//右辺が左辺よりも多い場合
let [j, k, l] = [30, 40, 50, 60];

console.log(j);
console.log(k);
console.log(l);

この場合の出力は、次のようになります。

10
20
undefined
30
40
50

左辺の変数iには、それに対する右辺の値が存在しない為、undefinedになります。

配列をネストしている場合

分割代入する配列がネストされている場合について試してみます。

let [m, n, o, [p, q], r] = [100, 101, 102, [201, 202], 103];

console.log(m);
console.log(n);
console.log(o);
console.log(p);
console.log(q);
console.log(r);

出力結果は

100
101
102
201
202
103

となります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です