JavaScriptでは、変数や値は特定の「型」を持ちます。型は、データがどのように扱われるかを決定する重要な概念です。JavaScriptのデータ型は大きく分けて「プリミティブ型」と「オブジェクト型」の2つがあります。この記事では、これらの型について詳しく解説します。
プリミティブ型
プリミティブ型(または基本型)は、JavaScriptで最も基本的なデータ型です。これらの型はすべて、変更できない値(イミュータブル)を持ちます。以下がJavaScriptのプリミティブ型です。
null
nullは、「意図的に値が存在しない」ことを示す特殊な値です。変数に`null`を代入することで、その変数に値が存在しないことを明示的に表します。
let value = null;
console.log(value); // null
undefined
undefined
は、変数が宣言されているが、値がまだ代入されていない状態を示します。未初期化の変数や存在しないオブジェクトのプロパティにアクセスすると、undefined
が返されます。
let value;
console.log(value); // undefined
Boolean
Boolean
型は、true
(真)またはfalse
(偽)のいずれかの値を取るデータ型です。主に条件分岐や論理演算に使用されます。
let isReady = true;
let isFinished = false;
Number
Number
型は、整数や小数を含む数値を表します。JavaScriptでは、すべての数値はNumber
型であり、整数も浮動小数点数も同じ型として扱われます。
let age = 25;
let price = 99.99;
BigInt
BigInt
は、非常に大きな整数を扱うためのデータ型です。Number
型では表現できない大きな整数を扱いたい場合に使用します。
let bigNumber = 123456789012345678901234567890n;
String
String
型は、文字列を表すデータ型です。文字列は、シングルクォート(’)、ダブルクォート(”)、またはバックティック(`)で囲むことで表現します。
let greeting = "Hello, World!";
let name = 'すずきまさゆき';
Symbol
Symbol
は、唯一無二の識別子を表すデータ型です。オブジェクトのプロパティキーとして使用されることが多いです。Symbol
は常にユニークで、他のSymbol
とは異なる値を持ちます。
let uniqueId = Symbol('id');
console.log(uniqueId); // Symbol(id)
オブジェクト型
オブジェクト型は、複雑なデータ構造を表現するための型です。オブジェクト型は、複数の値をプロパティとして持つことができ、データと機能をまとめて管理するのに適しています。以下に、JavaScriptの代表的なオブジェクト型を紹介します。
オブジェクト
オブジェクト
は、キーと値のペアを格納するコンテナです。キーは文字列またはSymbol
で、値には任意の型を使用できます。オブジェクトは、データを構造化して格納するための基本的なデータ型です。
let person = {
name: "すずきまさゆき",
age: 30,
greet: function() {
console.log("Hello, " + this.name);
}
};
配列
配列
は、順序付きのデータのリストを格納するためのオブジェクト型です。配列の各要素には、0から始まるインデックスを使用してアクセスします。
let fruits = ["りんご", "バナナ", "さくらんぼ"];
console.log(fruits[0]); // "りんご"
関数
関数
は、コードの再利用可能なブロックを表すオブジェクト型です。関数は、他の変数と同様に扱うことができ、引数を受け取り、処理を実行し、結果を返すことができます。
function add(a, b) {
return a + b;
}
let sum = add(5, 3);
console.log(sum); // 8
プリミティブ型とオブジェクト型の違い
値の扱い
- プリミティブ型は、値そのものを持ちます。値はイミュータブル(不変)で、変更することはできません。コピーするときには、値そのものがコピーされます。
- オブジェクト型は、参照を持ちます。オブジェクト自体はミュータブル(可変)で、プロパティを追加・削除・変更することができます。コピーするときには、参照がコピーされるため、コピー先と元が同じオブジェクトを参照します。
メモリの使用
- プリミティブ型の値は、メモリ内に直接格納されます。
- オブジェクト型の値は、ヒープに格納され、その参照がメモリ内に格納されます。
比較
- プリミティブ型の比較は、値そのものを比較します。
- オブジェクト型の比較は、参照を比較します。同じ内容を持つ別々のオブジェクトは等しくないと判断されます。
let a = 10;
let b = 10;
console.log(a === b); // true(プリミティブ型の値比較)
let obj1 = { name: "すずきまさゆき" };
let obj2 = { name: "すずきまさゆき" };
console.log(obj1 === obj2); // false(オブジェクト型の参照比較)
まとめ
JavaScriptの型には、プリミティブ型とオブジェクト型があります。プリミティブ型は基本的なデータ型で、値そのものを扱います。
一方、オブジェクト型は複雑なデータ構造や機能を扱うための型で、参照を介して操作されます。これらの型を理解することで、JavaScriptでのプログラミングがよりスムーズに進められるようになります。