🦒 プリミティブ型とオブジェクトによる挙動の違い(参照かコピーか)
作成日: 2022/01/16
1

JavaScriptの型は8つ存在する

String, Number, Boolean, Undefined, Null, Symbol, BigInt, Object

8つの型をさらに2種類に分けられる

プリミティブ型

プリミティブ (英語: primitive): 原始的、素朴な、幼稚な、などといった意味。

それ以上小さくならないもの的な。
※日本語で理解しておくと、分かりやすい。

String, Number, Boolean, Undefined, Null, Symbol, BigInt

オブジェクト

Object

プリミティブ型とオブジェクトでは、挙動が異なる

変数の場合

プリミティブ型

let a = 'morning';
let b = a //bはaのコピーを作っている
b = 'afternoon'

console.log(a) //morning
console.log(b) //afternoon

オブジェクト

同じオブジェクトを参照しているため、bの値を変えると、aの値も変わってしまう。

let c = {
    day: 'morning'
}
let d = c;
d.day = 'afternoon'
console.log(c) // {day: 'afternoon'} ← dの値を変更したはずが、cの値も変わっている
console.log(d) // {day: 'afternoon'} 

定数の場合

オブジェクトそのものは再代入不可

const e = {
    day: 'morning'
}

e = {}
//エラー表示が出る Uncaught TypeError: Assignment to constant variable.

オブジェクトの値は再代入できる

const f = {
    day: 'morning'
}

f.day = 'afternoon'
console.log(f) //{day: 'afternoon'}

事業会社にてコーダーをしています。制作は6年目。 インプットしたことをアウトプットしています。