LoginSignup
0
0

More than 3 years have passed since last update.

【JavaScript】配列の変数を操作する方法(プリミティブ型とオブジェクト型の違い)

Last updated at Posted at 2020-05-04

【JavaScript】配列の変数を操作する方法(値渡しと参照渡し)

配列ではない場合の変数の操作


    let a = 1;
    let b = a;
    a = 3;

    console.log(a);//3
    console.log(b);//1

これはlet b = a;の後にa = 3;を実行しても、処理を実行したbには影響を与えない。
プリミティブ(値)型の挙動。JavaScriptの場合は値渡しと呼ぶ。
「引越し前の住所を見ている」と覚えることにする。

配列の変数の操作


    let a = [1,2];
    let b = a;
    a[0] = 3;

    console.log(a);//[3,2];
    console.log(b);//[3,2]

この場合のbは[1,2]ではなく、配列a(の場所)を参照しているため、[1,2]とはならず[3,2]となる。
オブジェクト型(参照型)の挙動。JavaScriptの場合は参照の値渡し(共有渡し)と呼ぶ。
「引っ越し後の住所に転送されている状態」と覚えることにする。

オブジェクト型(配列)の変数を操作する方法

スプレッド構文(...)を使うことでプリミティブ型のように変数を操作できる。


    let a = [1,2];
    let b = [...a];//let b = a;をスプレッド構文で書いた場合
    a[0] = 3;

    console.log(a);//[3,2];
    console.log(b);//[1,2];

補足

言語により、参照の値渡し、参照渡しと挙動と表現が異なる。
用語を引用する場合は前提条件(本件の場合は言語)を正しく確認する必要がありますね。学びました。

参考:値渡しと参照渡しと参照の値渡しと
https://qiita.com/ur_kinsk/items/949dabe975bdc1affb82

謝辞:shiracamus様

0
0
3

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