📚

【基礎】プリミティブ型とオブジェクト型について

2022/10/10に公開約1,400字

データ型とは?

文字列や数値などの異なる型のこと。
Javascript(ECMAScript)では9種類存在しており、プリミティブ型オブジェクトの2種類に分けられる。

プリミティブ型 オブジェクト
String(文字列型)、Number(数値型)、Boolean(論理型)、Undeifind、Null、Symbol(シンボル型)、BigInt(長整数型) Object、function(関数)

また以下のようにtype of演算子で型を確認することも可能。

// (例)
console.log(typeof "string"); // string
console.log(typeof 123); // number
console.log(typeof true); // boolean
console.log(typeof { "key": "value" }); // object
console.log(typeof function () {}); // function

プリミティブ型

全てのプリミティブ型においてはイミュータブル (immutable) である。

// (例)
let hoge = "fuga";
let piyo = hoge;
piyo = "hogehoge";
console.log(hoge); // fuga
console.log(piyo); // hogehoge

プリミティブ型の値を格納する変数を他の変数に渡した場合、それぞれの値は独立している為、どちらかの値を変更してももう一方の値が変更されることはない。

オブジェクト

プリミティブ型以外の全てを指す。参照を名前付きで管理している箱のようなもの。

// (例)
let hoge = {
  prop: "fuga",
};
let piyo = hoge;
piyo.prop = "hogehoge";
console.log(hoge); // {prop: 'hogehoge'}
console.log(piyo); // {prop: 'hogehoge'}

オブジェクトを保持している変数を他の変数に代入した場合、プロパティを変更するとその変更がもう一方のオブジェクトにも影響してしまう。

オブジェクトの再代入を行なった場合はもう一方のオブジェクトに影響をしなくなる。

// (例)
let hoge = {
  prop: "fuga",
};
let piyo = hoge;
piyo = {}; // 追加
piyo.prop = "hogehoge";
console.log(hoge); // {prop: 'fuga'}
console.log(piyo); // {prop: 'hogehoge'}

Discussion

ログインするとコメントできます