🦒
プリミティブ型とオブジェクトによる挙動の違い(参照かコピーか)
作成日:
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年目。
インプットしたことをアウトプットしています。