【JavaScript】プリミティブ型(基本型)とオブジェクト型(参照型)について

JavaScriptにのデータ型には、プリミティブ型(基本型)とオブジェクト型(参照型)がある

プリミティブ型(基本型)

真偽値(boolean)
数値(number)
文字列(string)
null
undefined
シンボル(symbol)

オブジェクト型(参照型)

プリミティブ型(基本型)以外のデータ型

オブジェクト(object)
配列(array)
関数(function)

プリミティブ型とオブジェクト型の違い

プリミティブ型は変数をコピーする時、変数の中身の値がそのままコピーされる。

オブジェクト型は変数をコピーする時、その値がコピーされるのではなく、そのオブジェクトが持っているメモリ上のアドレスがコピーされる。

以下がその例

プリミティブ型の場合

let a = 20;
let b = a;
a = 80;
console.log(a); // 80
console.log(b); // 20

bにaを代入した後にaに新たに100の値を代入しているが、bに影響は受けない。

さっきも説明したように、メモリ参照せずに変数の値をそのままコピーしていることが分かる。

オブジェクト型の場合

let obj1 = {
  name: "ken",
  age: 20
};
let obj2 = obj1;
obj1.age = 80;
console.log(obj1.age); // 100
console.log(obj2.age); // 100

obj2にobj1を代入することで、obj1もobj2も同じメモリ上のアドレスと保持するようになったため、片方のageの値を変更すると、もう片方の値も同じになる。

コメント