JavaScript プリミティブ型
1. JavaScriptの変数とデータ型
JavaScriptの変数(Variable)は、合計で8つのデータ型を保持できます。
それらは、7つのプリミティブ型(Primitive types)と、1つのオブジェクト型(Object type)に分けられます。
1.1 プリミティブ型の例
// 数値 (Number)
let length = 16;
let weight = 7.5;
// BigInt (巨大な整数)
let x = 1234567890123456789012345n;
let y = BigInt(1234567890123456789012345);
// 文字列 (String)
let color = "Yellow";
let lastName = "Johnson";
// 論理値 (Boolean)
let isTrue = true;
let isFalse = false;
// Undefined (未定義)
let undefVar;
let emptyVar = undefined;
// Null (空値)
let nullVar = null;
// シンボル (Symbol)
const sym1 = Symbol();
const sym2 = Symbol();2. JavaScriptの文字列(String)
文字列(String)は、"John Doe" のような一連の文字の集まりです。
文字列は引用符(Quotes)で囲んで記述します。シングルクォート(')またはダブルクォート(")のどちらも使用可能です。
// ダブルクォートを使用する場合:
let carName1 = "Volvo XC60";
// シングルクォートを使用する場合:
let carName2 = 'Volvo XC60';文字列を囲んでいる引用符と異なる種類であれば、文字列内に引用符を含めることができます。
// ダブルクォートの中にシングルクォートを含める:
let answer1 = "It's alright";
// ダブルクォートの中にシングルクォートを含める:
let answer2 = "He is called 'Johnny'";
// シングルクォートの中にダブルクォートを含める:
let answer3 = 'He is called "Johnny"';3. JavaScriptの数値(Number)
JavaScriptの数値(Number)は、すべて小数(64ビット浮動小数点数)として保存されます。
数値は、小数点(Decimals)の有無にかかわらず記述できます。
// 小数点あり:
let x1 = 34.00;
// 小数点なし:
let x2 = 34;3.1 指数表記(Exponential Notation)
極端に大きい数値や小さい数値は、科学的表記法(指数表記)を使用して記述できます。
let y = 123e5; // 12300000 (123 * 10の5乗)
let z = 123e-5; // 0.00123 (123 * 10のマイナス5乗)3.2 数値の型(Number Types)について
多くのプログラミング言語には、以下のような複数の数値型が存在します:
- 整数(Integers): byte (8-bit), short (16-bit), int (32-bit), long (64-bit)
- 実数(Floating-point): float (32-bit), double (64-bit)
しかし、JavaScriptの数値は常に double(64ビット浮動小数点数) として扱われます。
4. JavaScript BigInt
JavaScriptの通常の数値(Number)はすべて64ビット浮動小数点形式で保存されます。
BigIntは、通常の Number 型では表現できないほど巨大な整数値を保存するために導入された新しいデータ型(ES2020)です。
let x = BigInt("123456789012345678901234567890");5. JavaScriptの論理値(Boolean)
論理値(Boolean)は、true(真)または false(偽)の2つの値しか持ちません。
let x = 5;
let y = 5;
let z = 6;
(x == y) // true を返す
(x == z) // false を返す論理値は、主に条件分岐などのテストで使用されます。
6. typeof 演算子
JavaScriptの 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" を返す7. Undefined
JavaScriptでは、値が割り当てられていない変数には、デフォルトで undefined という値が入ります。また、その変数の型も undefined となります。
let car; // 値は undefined、型も "undefined"変数の値を undefined に設定することで、変数を空にすることも可能です。
car = undefined; // 値は undefined、型も "undefined"8. 空の値(Empty Values)
空の値は、undefined とは全く関係ありません。
空の文字列("")は、有効な値(空のテキスト)と型(String)を両方持っています。
let car = ""; // 値は ""、typeof は "string"9. データ型 null
JavaScriptでは、いくつかの方法で変数や式が null というデータ型を取得することがあります。
関数が null を返したり、変数に明示的に null 値を代入したりする場合です。
let carName = null;9.1 null に関する注意点
typeof 演算子を null に対して実行すると、"object" を返します。
これはJavaScriptの設計上の古い不具合(歴史的な経緯)によるものであり、null がオブジェクトであることを意味するわけではありません。
また、比較の際は以下の点に注意してください:
- 厳密等価演算子 (===): オペランドの値と型の両方を比較します。両方が
nullの場合にのみtrueを返します。 - 抽象的等価演算子 (==):
nullをチェックする際、値がundefinedの場合もtrueを返してしまいます。
そのため、null かどうかを判定する際には、== の使用は推奨されません。