プリミティブ型

編集

プリミティブ型 (Primitive type) は、JavaScriptにおける基本的なデータ型で、オブジェクトではない不変値を表します。これらの型は、言語の中核を構成するシンプルな値として扱われ、JavaScriptプログラムの基本的な要素を構成します。

プリミティブ型の種類

編集

JavaScriptには以下の7つのプリミティブ型が存在します:

  1. undefined - 変数が未定義であることを示す値。
  2. null - 意図的に「何もない」ことを表す値。
  3. boolean - 真偽値を表す型 (true または false)。
  4. number - 数値を表す型。整数や浮動小数点数を含む。
  5. bigint - 任意精度の整数を表す型。
  6. string - 文字列を表す型。
  7. 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)

特殊な注意点

編集
  • nullundefined の違い: null は明示的な「空」を表し、undefined は「未定義」を表します。
  • typeof null の挙動: 歴史的な理由により、typeof null は `"object"` を返しますが、null はプリミティブ型です。
  • bigint の制約: number 型と bigint 型は相互に混在して演算できません。

まとめ

編集
  • プリミティブ型はJavaScriptの基本的なデータ型であり、7つの種類が存在します。
  • これらの型はオブジェクトとは異なるシンプルな値として扱われ、プログラムの基本的な構成要素となります。
  • プリミティブ型は不変であり、オブジェクトとの違いや型変換の仕組みを理解することが重要です。