0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScript スプレッド構文(...)まとめ

Posted at

1. JavaScript の スプレッド構文とは

スプレッド構文は 「...」 を使って配列やオブジェクトを展開するための記法 です。
🔍 「展開」とは?
👉 配列やオブジェクトの中身を、その場に広げて使えるようにすること

const arr = [1, 2, 3];
console.log(...arr);
// 出力: 1 2 3   ← 配列の要素が展開されて並ぶ

🔍 なぜ展開する必要があるのか?
👉配列やオブジェクトは「そのまま」では ひとまとまりのデータ として扱われます。
そのため、関数に渡すときなどに意図通りに動かないことがあります。

配列をそのまま渡した場合

function sum(a, b, c) {
  return a + b + c;
}

const arr = [1, 2, 3];

console.log(sum(arr)); // NaN

なぜ NaN になるのか?

  • sum(arr) と書くと 引数は 1つだけ。 渡される実際の中身はこうなる↓
a = [1, 2, 3]
b = undefined
c = undefined

🚩 まとめ

  • 配列をそのまま渡す → 「配列1個」を引数として渡す
  • スプレッド構文で渡す → 配列の中身を「個々の要素」として渡す
sum(arr)       a = [1,2,3], b = undefined, c = undefined
sum(...arr)    a = 1, b = 2, c = 3

2. スプレッド構文とその使用方法

✅ 配列での使い方

コピー

const arr = [1, 2, 3];
const copy = [...arr];

copy.push(4);

console.log(arr);  // [1, 2, 3]   ← 元の配列はそのまま
console.log(copy); // [1, 2, 3, 4]
 // 新しい配列を作れるので、元の配列が壊れない

結合

const a = [1, 2];
const b = [3, 4];
const merged = [...a, ...b];

console.log(merged); // [1, 2, 3, 4]

✅ オブジェクトでの使い方

コピー

const obj = { a: 1, b: 2 };
const copy = { ...obj };

console.log(copy); // { a: 1, b: 2 }

結合

const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, d: 4 };
const merged = { ...obj1, ...obj2 };

console.log(merged); // { a: 1, b: 2, c: 3, d: 4 }

関数呼び出しでの利用

function sum(x, y, z) {
  return x + y + z;
}

const nums = [1, 2, 3];
console.log(sum(...nums)); // 6

3. 使用上の注意点

✅ 無効なデータ型への展開はエラーになる

スプレッド構文はオブジェクト型(配列やオブジェクトなど)にのみ使用できます。
プリミティブ型の値(文字列や数値など)に対して使用すると、エラーが発生します。

✅ 重複する部分は上書きされる

複数のオブジェクトをマージする場合、後から書いた方が優先されます。

const obj1 = { a: 1, b: 2 };
const obj2 = { b: 100, c: 200 };

const merged = { ...obj1, ...obj2 };

console.log(merged); // { a: 1, b: 100, c: 200 }

4. 参考資料 📚

0
0
1

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?