JavaScript のデータ型
1. JavaScriptのデータ型の構成
JavaScriptの変数(Variables)は、8つのデータ型を保持することができます。
それらは「7つのプリミティブ型(Primitive Data Types)」と「1つのオブジェクト型(Object Data Type)」で構成されています。
オブジェクト型には、さらに多くの異なるオブジェクトの種類が含まれます。
| 型 (Type) | 説明 |
|---|---|
| Number | 数値を表すデータ型 |
| Bigint | 通常のNumberでは扱えない巨大な整数を表すデータ型 |
| String | 引用符(クォート)で囲まれたテキストデータ |
| Boolean | 真(true)または偽(false)を表す論理型 |
| Undefined | 値が割り当てられていない変数に代入されるデフォルト値 |
| Null | オブジェクトが存在しないことを明示的に表す値 |
| Symbol | ユニークで不変なプリミティブ識別子 |
| Object | キーと値のペアで構成されるデータのコレクション |
1.1 各データ型のコード例
// 数値 (Number)
let length = 16;
let weight = 7.5;
// BigInt (巨大な整数)
let x = 1234567890123456789012345n;
let y = BigInt(1234567890123456789012345);
// 文字列 (Strings)
let color = "Yellow";
let lastName = "Johnson";
// 論理値 (Boolean)
let x = true;
let y = false;
// Undefined (未定義)
let x;
let y;
// Null (空値)
let x = null;
let y = null;
// シンボル (Symbol)
const x = Symbol();
const y = Symbol();
// オブジェクト (Object)
const person = {firstName:"John", lastName:"Doe"};
// 配列オブジェクト (Array Object)
const cars = ["Saab", "Volvo", "BMW"];
// 日付オブジェクト (Date Object)
const date = new Date("2022-03-25");2. データ型の概念(The Concept of Data Types)
プログラミングにおいて、データ型は非常に重要な概念です。
変数に対して適切な操作を行うためには、その型を知る必要があります。
データ型という概念がなければ、コンピュータは以下のような処理を安全に解決できません。
let x = 16 + "Volvo";
「16」に「Volvo」を加算することに意味はあるでしょうか? エラーが発生するのか、あるいは何らかの結果が生成されるのでしょうか?
JavaScriptは上記の例を次のように処理します:let x = "16" + "Volvo";
数値と文字列を加算する場合、JavaScriptは数値を文字列として扱います。
2.1 型変換の具体例
let x = 16 + "Volvo"; // 結果: "16Volvo"let x = "Volvo" + 16; // 結果: "Volvo16"JavaScriptは式を左から右に向かって評価します。そのため、順序によって結果が変わることがあります。
例1:
let x = 16 + 4 + "Volvo";
// 結果: 20Volvoこの例では、JavaScriptは "Volvo" に到達するまで、16と4を数値として処理(加算)します。
例2:
let x = "Volvo" + 16 + 4;
// 結果: Volvo164この例では、最初のオペランドが文字列であるため、その後のすべてのオペランドも文字列として処理されます。
3. JavaScriptは「動的型付け」言語
JavaScriptは動的型付け(Dynamic Types)を採用しています。つまり、同じ変数を使用して異なるデータ型を保持させることができます。
let x; // x は undefined
x = 5; // x は Number (数値) になる
x = "John"; // x は String (文字列) になる4. ビルトインオブジェクト型 (Built-In Object Types)
JavaScriptのオブジェクトは、言語標準のオブジェクト、またはユーザー定義のオブジェクトを表します。
標準で用意されている主なビルトインオブジェクト型は以下の通りです。
| オブジェクト | 説明 |
|---|---|
| Array | 数値インデックスでアクセスする値の配列 |
| Map | キーにあらゆるデータ型を使用できるキー・値ペアの配列 |
| Set | 同じ値が一度しか出現しない値の集合体 |
| WeakMap | 格納されたオブジェクトへの「弱い参照」を持つMap型 |
| WeakSet | 格納されたオブジェクトへの「弱い参照」を持つSet型 |
| Math | PIなどの定数や、random()などの数学関数を提供するオブジェクト |
| Date | 日付と時刻を扱うためのオブジェクト |
| RegExp | 正規表現(Regular Expressions)を扱うためのオブジェクト |
| Error | プログラム実行中のエラー状態を表すオブジェクト |
| JSON | JSONとJavaScriptオブジェクト間のパースを行うメソッドを持つオブジェクト |
| Promise | 非同期処理の完了または失敗を表すオブジェクト |
| Int8Array | 固定サイズ(8ビット)の整数値を格納する配列 |
| Int16Array | 固定サイズ(16ビット)の整数値を格納する配列 |
| Int32Array | 固定サイズ(32ビット)の整数値を格納する配列 |
| Float16Array | 固定サイズ(16ビット)の浮動小数点数値を格納する配列 |
| Float32Array | 固定サイズ(32ビット)の浮動小数点数値を格納する配列 |
| Float64Array | 固定サイズ(64ビット)の浮動小数点数値を格納する配列 |
| BigInt64Array | 固定サイズ(64ビット)の巨大整数を格納する配列 |
5. typeof 演算子
JavaScriptの typeof 演算子を使用すると、変数や式のデータ型を確認することができます。
5.1 typeof の使用例
typeof "" // "string" を返す
typeof "John" // "string" を返す
typeof "John Doe" // "string" を返すtypeof 0 // "number" を返す
typeof 314 // "number" を返す
typeof 3.14 // "number" を返す
typeof (3) // "number" を返す
typeof (3 + 4) // "number" を返す