データ型
この記事では、JavaScriptのデータ型について解説する。
データ型を理解することで、変数にどのような値が入れられるのか、どのような計算ができるのかがわかる。
この記事で学ぶこと:
- データ型について
- JavaScriptのデータ型
- typeof
- 型変換
データ型について
データ型とは、プログラムが扱うデータの種類やその使い方を決めるものである。
JavaScriptは動的型付け言語なので、変数などの宣言に型を指定する必要はない。
値を代入すると、JavaScriptが自動的に適切な型を判断してくれる。
動的型付け言語の他に静的型付け言語がある。
データ型を正しく理解していないと、条件分岐やループ処理で予期せぬ不具合を起こす可能性がある。
特に、文字列と数値の混同はよくある間違いなので注意が必要である。
JavaScriptの型
JavaScriptには以下のプリミティブ型(基本的なデータ型)がある。
| データ型 | 説明 | 例 |
|---|---|---|
| 文字列型 (String) | テキストデータ | "hello", '太郎' |
| 数値型 (Number) | 整数・小数 | 123, 3.14 |
| 論理型 (Boolean) | 真偽値 | true, false |
| Null型 | 値が存在しない | null |
| Undefined型 | 値が未定義 | undefined |
文字列型
文字列型はテキストデータを表す。
文字列型を宣言するためには:
- "":(ダブルクォート)
- '':(シングルクォート)
- ``:(バッククォート)
これのいずれかでデータを囲む。
文字列型の変数を宣言するときは以下の書き方をする。
const a = "hello";
const b = '太郎';
const c = `12345`;
よくある間違い
異なるクォーテーションで囲む:
const a = "hello' // エラー(開始と終了が異なる)
const b = '太郎` // エラー(開始と終了が異なる)
const c = "12345"; // OK(ダブルクォートで統一)
数値型
数値型はその名の通り数値を表す。
数値の範囲には制限があり、安全に格納できる範囲は 「-(253-1)」 ~ 「253-1」 である。
数値型の変数を宣言するときは以下の書き方をする。
const a = 12;
const b = 3.14;
よくある間違い
文字列と数値の混同:
console.log(1 + 2); // 3 (数値の足し算)
console.log(1 + "2"); // "12" (文字列の連結)
console.log("1" + "2"); // "12" (文字列の連結)
論理型
論理型(Boolean)は真偽値を表すデータ型である。
論理型の変数を宣言するときは以下の書き方をする。
const a = true;
const b = false;
Null型
Null型には、値がnullの1つしかない。
nullは「値が存在しない」ことを意図的に示すために使う。
主にオブジェクトが存在しないことを表す際に使用する。
※オブジェクトの詳細は「オブジェクト」の記事にまとめる。
Undefined型
Undefined型には、値がUndefinedの1つしかない。
undefinedは「値が未定義」であることを示す。
変数を宣言したが、まだ値を代入していない状態である。
初期化を伴わない変数宣言は、暗黙的にundefinedに初期化する。
let a; // aにはundefinedが入る。
const b; // エラー(constは宣言と同時に値を決める必要があるから、エラーになる)
null と undefined の違い:
- null:意図的に「値がない」ことを示す(プログラマが設定)
- undefined:値がまだ設定されていない(システムが自動設定)
let a; // undefined(値を設定していない)
let b = null; // null(意図的に「値なし」を設定)
typeofについて
typeof演算子は変数の現在の型を調べるために使用する。
以下に使用例を示す。
const a = 123;
const b = "hello";
const c = true;
const d = null;
let e;
console.log(typeof a); // number
console.log(typeof b); // string
console.log(typeof c); // boolean
console.log(typeof d); // object
console.log(typeof e); // undefined
typeofの注意点:
typeof null は "object" を返すが、これはJavaScriptの歴史的なバグである。
nullはオブジェクトではなく、Nullである。
console.log(typeof null); // "object"(バグによる誤った結果)
型変換について
JavaScriptでは自動的に型変換を行う(暗黙的変換)場合と、プログラマが明示的に型変換を行う場合がある。
文字列型の型変換
暗黙的な型変換
文字列型と他の型を「+」で結合すると、自動的に文字列に変換される。
console.log("a = " + 1); // "a = 1" (1が暗黙的に文字列に変換される)
console.log("合計: " + 100); // "合計: 100" (100が文字列に変換される)
console.log(true + " です"); // "true です" (trueが文字列に変換される)
明示的な型変換
String()関数やtoString()メソッドを使って、明示的に文字列を変換できる。
String(1); // "1" (数値を文字列に変換)
String(true); // "true" (論理値を文字列に変換)
const a = 3.14;
a.toString(); // "3.14" (数値を文字列に変換)
数値型の型変換
暗黙的な型変換
数値型の型変換を行う場合、以下のような例だと自動的に数値型に変換される。
console.log("1" - 1); // 0
console.log("2" * 5); // 10
console.log(10 / "5"); // 2
「+」以外の演算子は、文字列型と数値型で計算すると文字列型を数値型に変換して、計算結果を返す。
明示的な型変換
Number()関数を使って、明示的に数値に変換できる。
Number("123"); // 123 (文字列を数値に変換)
const a = "5";
console.log(Number(a) + 3); // 8 (aの値を数値に変換するので、加算を行う。)
演習問題
ここまでの内容を理解できたか、実際に手を動かして確認しよう。
演習1:データ型の基本
論理型・文字列型・数値型、それぞれの変数を宣言してみよう。
解答
const a = true;
const b = "太郎";
const c = 123;
演習2:typeofの基本
演習1で宣言した変数の型を出力するプログラムを作ってみよう。
解答
console.log(typeof a);
console.log(typeof b);
console.log(typeof c);
演習3:文字列の型変換
演習1で宣言した、論理型・数値型を文字列に明示的に変換して、出力するプログラムを作ってみよう。
解答
// 論理型を文字列に変換
console.log(String(a)); // "true"
console.log(a.toString()); // "true"
// 数値型を文字列に変換
console.log(String(c)); // "123"
console.log(c.toString()); // "123"
演習4:数値型の型変換
文字列型で宣言した数値を数値型に明示的に変換して、四則演算の結果を出力するプログラムを作ってみよう。
解答
const a = "10";
const b = "5";
console.log(Number(a) + Number(b));
console.log(Number(a) - Number(b));
console.log(Number(a) * Number(b));
console.log(Number(a) / Number(b));
まとめ
この記事では、JavaScriptの以下のことを学んだ
- データ型:プログラムが扱うデータの種類やその使い方を決めるもの
- JavaScriptの型:論理型・文字列型・数値型・Null型・Undefined型の使い方
- typeof:変数の型を調べる方法
- 型変換:暗黙的・明示的型変換の方法