JavaScript 速習チュートリアル

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型
MathPIなどの定数や、random()などの数学関数を提供するオブジェクト
Date日付と時刻を扱うためのオブジェクト
RegExp正規表現(Regular Expressions)を扱うためのオブジェクト
Errorプログラム実行中のエラー状態を表すオブジェクト
JSONJSONと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" を返す