JavaScript/プリミティブ型
プリミティブ型
編集プリミティブ型 (Primitive type) は、JavaScriptにおける基本的なデータ型で、オブジェクトではない不変値を表します。これらの型は、言語の中核を構成するシンプルな値として扱われ、JavaScriptプログラムの基本的な要素を構成します。
プリミティブ型の種類
編集JavaScriptには以下の7つのプリミティブ型が存在します:
- undefined - 変数が未定義であることを示す値。
- null - 意図的に「何もない」ことを表す値。
- boolean - 真偽値を表す型 (
true
またはfalse
)。 - number - 数値を表す型。整数や浮動小数点数を含む。
- bigint - 任意精度の整数を表す型。
- string - 文字列を表す型。
- symbol - 一意の識別子を表す型。
特徴
編集- 不変性: プリミティブ型の値は変更できません。値を変更するには、新しい値を生成する必要があります。
- 非オブジェクト型: プリミティブ型はオブジェクトではありません。ただし、一部のメソッドを使用するときには、一時的にラッパーオブジェクトに変換されます。
プリミティブ型のチェック
編集プリミティブ型かどうかを判定するには、typeof
演算子を使用します。
// 各プリミティブ型の例と typeof の出力
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" (仕様上の例外)
console.log(typeof true); // "boolean"
console.log(typeof 42); // "number"
console.log(typeof 9007199254740991n); // "bigint"
console.log(typeof "Hello"); // "string"
console.log(typeof Symbol()); // "symbol"
オブジェクトとの違い
編集- プリミティブ型はシンプルな値であり、メソッドやプロパティを直接持ちません。
- オブジェクトは複雑なデータ構造を持ち、プロパティやメソッドを定義できます。
- プリミティブ型を操作する際、一時的に対応するラッパーオブジェクトが生成される場合があります。
// プリミティブ型とオブジェクトの比較
const str = "hello"; // プリミティブ型
const obj = new String(str); // Stringオブジェクト
console.log(typeof str); // "string"
console.log(typeof obj); // "object"
console.log(str === obj); // false (型が異なる)
プリミティブ型の変換
編集JavaScriptでは、プリミティブ型間で明示的または暗黙的な型変換が行われる場合があります。
// 明示的な型変換
console.log(String(42)); // "42"
console.log(Number("42")); // 42
console.log(Boolean(0)); // false
// 暗黙的な型変換
console.log(42 + ""); // "42" (number → string)
console.log("42" * 1); // 42 (string → number)
特殊な注意点
編集null
とundefined
の違い:null
は明示的な「空」を表し、undefined
は「未定義」を表します。typeof null
の挙動: 歴史的な理由により、typeof null
は `"object
"` を返しますが、null
はプリミティブ型です。bigint
の制約:number
型とbigint
型は相互に混在して演算できません。
まとめ
編集- プリミティブ型はJavaScriptの基本的なデータ型であり、7つの種類が存在します。
- これらの型はオブジェクトとは異なるシンプルな値として扱われ、プログラムの基本的な構成要素となります。
- プリミティブ型は不変であり、オブジェクトとの違いや型変換の仕組みを理解することが重要です。