JavaScriptのデータ型の違いを表で比較しよう(一覧解説)
生徒
「JavaScriptにはいろいろなデータ型があるって聞きましたが、何がどう違うんですか?」
先生
「いい質問ですね。データ型は、プログラムで扱う値の種類を表します。JavaScriptでは主に7つの基本データ型がありますよ。」
生徒
「えっ、そんなにあるんですか!?一つずつ見てみたいです!」
先生
「じゃあ、データ型の一覧を表で整理しながら説明していきましょう!」
1. JavaScriptの基本的なデータ型とは?
JavaScriptのデータ型は、値の種類や扱い方を分類するものです。主に次のような型があります。
- 数値型(Number): 数を表す型
- 文字列型(String): 文字や文章を表す型
- 真偽値型(Boolean): trueまたはfalseを表す型
- 未定義型(Undefined): 値が設定されていない状態
- ヌル型(Null): 意図的に「何もない」とする型
- 記号型(Symbol): 一意な識別子を表す型
- BigInt型: 非常に大きな整数を扱うための型
2. データ型の違いを一覧表で比較
それぞれのデータ型の違いを下の表にまとめました。
| データ型 | 型名 | 例 | 特徴・使いどころ |
|---|---|---|---|
| 数値 | Number | 10, 3.14, -5 | 整数や小数を扱う |
| 文字列 | String | "こんにちは", 'Hello' | 文章や単語などの文字を扱う |
| 真偽値 | Boolean | true, false | はい・いいえ、条件分岐などに使用 |
| 未定義 | Undefined | let x; console.log(x); | 変数に値が設定されていない状態 |
| ヌル | Null | null | 「何もない」ことを明示的に表す |
| 記号 | Symbol | Symbol("id") | ユニークな識別子として使う |
| 大きな整数 | BigInt | 123456789012345678901234567890n | 非常に大きな整数を扱う |
3. typeof演算子で型を確認してみよう
JavaScriptでは、typeofという演算子を使って変数の型を調べることができます。
let name = "太郎";
console.log(typeof name); // "string"
let age = 30;
console.log(typeof age); // "number"
let isStudent = true;
console.log(typeof isStudent); // "boolean"
string
number
boolean
4. 特殊な注意点:nullの型は「object」になる
JavaScriptでは、nullの型をtypeofで調べると「object」と表示されます。これはJavaScriptの仕様であり、バグではありません。
let nothing = null;
console.log(typeof nothing); // "object"
object
この点は初心者が混乱しやすいポイントなので、覚えておきましょう。
まとめ
ここまでJavaScriptにおける主要なデータ型について詳しく解説してきました。プログラミングの基礎とも言える「型」の理解は、単に知識として覚えるだけでなく、実際の開発において予期せぬエラーを防ぐために非常に重要です。JavaScriptは動的型付け言語であり、変数の型が実行時に決まるという柔軟性を持っていますが、その分、数値と文字列を混ぜて計算してしまったり、nullやundefinedの扱いでミスをしたりすることが多々あります。
データ型を使いこなすためのポイント
日常的なコーディングで最も頻繁に利用するのは、Number型(数値)、String型(文字列)、そして条件分岐の要となるBoolean型(真偽値)の3つです。しかし、中規模以上のアプリケーションを開発するようになると、情報の欠如を示すnullやundefinedの使い分け、あるいはビット精度の高い計算が必要な際のBigInt型、オブジェクトのプロパティ競合を避けるためのSymbol型といった、より高度なデータ型の知識が求められるようになります。
プリミティブ型とオブジェクト型の違い
今回紹介した7つの型は「プリミティブ型」と呼ばれ、これら以外に「オブジェクト型(参照型)」が存在します。配列(Array)や関数(Function)も実はオブジェクトの一種です。プリミティブ型は値そのものを保持しますが、オブジェクト型はメモリ上の参照(住所のようなもの)を保持するという根本的な違いがあります。この違いを意識できるようになると、JavaScriptの挙動をより深く理解できるようになります。
実践的な型判定のコード例
開発現場では、APIから取得したデータが期待通りの型であるかをチェックする「バリデーション」が欠かせません。以下に、複数のデータ型を判定し、それぞれの型に応じた処理を行う関数のサンプルコードを掲載します。
/**
* 与えられた値の型を判定し、適切なメッセージを返す関数
* @param {any} value - 判定する値
*/
function checkValueType(value) {
const type = typeof value;
if (value === null) {
console.log("この値は null です(typeofの結果は object ですが意図的な空です)");
return;
}
switch (type) {
case "string":
console.log("これは文字列型です。長さは " + value.length + " です。");
break;
case "number":
console.log("これは数値型です。2倍にすると " + (value * 2) + " になります。");
break;
case "boolean":
console.log("これは真偽値型です。現在の値は " + value + " です。");
break;
case "undefined":
console.log("値が定義されていません。");
break;
case "bigint":
console.log("これはBigInt型です。非常に大きな整数を扱っています。");
break;
case "symbol":
console.log("これはSymbol型です。一意な識別子として機能します。");
break;
default:
console.log("その他の型(objectなど)です。型名: " + type);
}
}
// テスト実行
checkValueType("JavaScript学習中");
checkValueType(2026);
checkValueType(true);
checkValueType(null);
checkValueType(undefined);
checkValueType(100n);
上記のコードを実行した結果は、コンソールに以下のように出力されます。
これは文字列型です。長さは 10 です。
これは数値型です。2倍にすると 4052 になります。
これは真偽値型です。現在の値は true です。
この値は null です(typeofの結果は object ですが意図的な空です)
値が定義されていません。
これはBigInt型です。非常に大きな整数を扱っています。
TypeScriptでの型定義の紹介
近年では、JavaScriptに静的な型付けを導入したTypeScriptが主流となっています。TypeScriptを使うことで、開発中(コンパイル時)に型の不整合を見つけることができ、バグの混入を劇的に減らすことが可能です。基本的なデータ型の指定方法は以下の通りです。
// TypeScriptでの型アノテーションの例
let userName: string = "山田太郎";
let userAge: number = 25;
let isActive: boolean = true;
let bigNumber: bigint = 9007199254740991n;
// 関数の引数と戻り値にも型を指定できる
function greet(name: string): string {
return "こんにちは、" + name + "さん!";
}
console.log(greet(userName));
このように型を明示することで、プログラムの意図が明確になり、他の開発者がコードを読む際の手助けにもなります。JavaScriptの基礎を固めた後は、ぜひTypeScriptにも挑戦してみてください。
さらなる学習に向けて
データ型の特性を理解したら、次は「型変換(キャスト)」についても学んでみましょう。文字列の "100" と数値の 100 を足したときに、結果が "100100" になるのか 200 になるのか、といった挙動を知ることで、より正確なロジックを組めるようになります。一歩ずつ、確実にスキルアップしていきましょう。
生徒
「先生、ありがとうございました!JavaScriptのデータ型って、意外と奥が深いんですね。特にnullの型がobjectになるっていうのは、知らなかったら絶対バグだと思っちゃいます(笑)」
先生
「ははは、そうですよね。それは歴史的な経緯による仕様なのですが、今でも有名な『JavaScriptの落とし穴』の一つなんです。でも、理由を知っていれば怖くありませんよ。」
生徒
「そうですね!あと、undefinedとnullの違いも少しずつ分かってきました。値がまだ無いのか、あえて空にしているのかっていう使い分けが大事なんですね。」
先生
「その通りです。素晴らしい洞察ですね。型を意識してコードを書くようになると、自然とエラーの少ない綺麗なプログラムが書けるようになります。次は実際にこれらの型を使って、計算や文字列の加工に挑戦してみましょうか。」
生徒
「はい!もっと複雑な処理も書けるようになりたいので、頑張ります。TypeScriptの話も少し出てきましたが、型をガッチリ決めるのも面白そうですね。」
先生
「良い意気込みですね。基本がしっかりしていれば、新しい技術の習得もスムーズですよ。もし途中で分からなくなったら、いつでも今回の表に戻って確認してくださいね。」
生徒
「ありがとうございます!まずはこの7つの型を完璧に使いこなせるように練習します!」