JavaScriptのデータ型

JavaScript で扱うデータ型は大きく分けてプリミティブ型とオブジェクト型に分けることができます。プリミティブ型には数値や文字列などが含まれ、オブジェクト型には配列や正規表現などが含まれます。ここでは JavaScript で扱うデータ型に関する基本的事項を解説します。

(Last modified: )

プリミティブ型とオブジェクト型

JavaScript のデータ型は大きくわけてプリミティブ型とオブジェクト型に分けることができます。プリミティブ型には次の 7 種類があります。

数値
長整数 ※ ES2020~
文字列
論理値
undefined
null
シンボル

数値は 10 や 3.14 など、文字列は 'Hello' などプリミティブ型の値は単一の値を持ちます。

プリミティブ型でないものはすべてオブジェクト型となります。オブジェクト型にはいろいろな種類があり下記はその一部です。

Object(オブジェクト)
Array(配列)
Function(関数)
StringやNumberなどのラッパーオブジェクト
Date(日時)
RegExp(正規表現)
JSON

オブジェクト型の値は複数の値を持ちます。例えば配列であれば ['apple', 'orange', 'lemon'] 、オブジェクトであれば {width:100, height:80} のように複数のプリミティブ型の値や他のオブジェクト型の値を持ちます。

変数のデータ型

他のプログラミング言語では変数を宣言するときにデータ型を指定するものもありますが、 JavaScript では変数宣言を行うときにはデータ型を指定しません。その為、変数にはどのようなデータ型の値でも格納することができます。

let num;
num = 10;

let name = 'Yamada';

値が既に格納されている変数に対して、別のデータ型の値を再度代入することもできます。

let name;
name = 'Yamada';

name = [45, 78, 95];

プリミティブ型のデータ型について

プリミティブ型のデータ型について、それぞれ簡単に解説します。

数値

数値型は整数および浮動小数点数が含まれます。整数は 10 や 324 などで、浮動小数点数には 7.52 や 4e5 などです。他のプログラミング言語では整数と浮動小数点数を別のデータ型にしているものもありますが、 JavaScript ではどちらも同じ数値型となり 64 ビットの浮動小数点数です。

数値型は演算子を使って四則演算を行うことができます。

let num = 10;
console.log(num);
>> 10

num = 70 + 45 * 3;
console.log(num);
>> 205

数値型の値は、データ型を調べる typeof 演算子の引数に指定すると number を返します。

console.log(typeof(10));
>> number

console.log(typeof(3.14));
>> number

長整数

長整数型は数値型では扱えない範囲の非常に大きな整数を扱うことができるデータ型です。数値の最後に n を付けて長整数型であることを表します。

let num = 52n;
console.log(num);
>> 52n

長整数型の値でも四則演算は可能ですが、数値型の値とは演算ができません(エラーが発生します)。演算を行う場合はどちらかを型変換する必要があります。

let num;
num = 21n + 8n;
console.log(num);
>> 29n

num = 47n + 19;
>> Uncaught TypeError: Cannot mix BigInt and other types, use explicit conversions

長整数型の値は、データ型を調べる typeof 演算子の引数に指定すると bigint を返します。

console.log(typeof(12n));
>> bigint

※ 長整数型は ECMAScript 2020 (ES11) から利用可能な新しい仕様なので、ブラウザによっては対応していない場合もあります。

文字列

文字列型は 0 文字以上の文字の集まりです。一つ一つの文字は 16 ビットの Unicode です。シングルクォーテーション(')またはダブルクォーテーション(")で全体を囲んで表します。

let msg;
msg = 'Hello';
console.log(msg);
>> Hello

let address = "東京都千代田区";
console.log(address);
>> 東京都千代田区

文字列型の値は、データ型を調べる typeof 演算子の引数に指定すると string を返します。

console.log(typeof('漢字'));
>> string

論理値

論理値には true または false のどちらかを取ります。 true は真であることをあらわし、 false は偽であることをあらわします。

論理値は主に if 文や while 文などの条件式で使われます。例えば 10 > 5 といった式は、真だった場合は true を返し、偽だった場合は false を返します。今回は真なので true を返します。

console.log(10 > 5);
>> true

console.log('ABC' == 'abc');
>> false

※ 実際の使い方については「繰り返し処理」や「条件分岐」をご参照ください。

また他の値と同様に変数に true や false といった値を格納することもできます。

let flag;
flag = true;
console.log(flag);
>> true

論理値の値は、データ型を調べる typeof 演算子の引数に指定すると boolean を返します。

console.log(typeof(true));
>> boolean

undefinedとnull

undefined は特殊な値のひとつで値が存在していことをあらわします。変数に対して undefined を代入するといった使い方ではなく、変数を宣言したけれどまだ値が代入されていない変数の値を参照したときに値がまだ未定義であることを示す undefined が返されます。(変数に undefined を代入できないわけではありません)。

var num;
console.log(num);
>> undefined

undefined は、データ型を調べる typeof 演算子の引数に指定すると undefined を返します。

console.log(typeof(undefined));
>> undefined

null も特殊な値のひとつで値が存在していないことをあらわします。 null は明示的に変数に代入することで、変数が特定の値やオブジェクトを参照しているのではないことを明示的にあらわしたい場合などに使います。

var name = null;
console.log(name);
>> null

null は、データ型を調べる typeof 演算子の引数に指定すると object を返します。( null が object を返す理由は深い理由はないそうです)。

console.log(typeof(null));
>> object

シンボル

シンボルは ECMAScript 2015 (ES6) から導入されたデータ型で、作成するたびに既に作成済みのシンボルと異なるユニークな値を作成します。

let s1 = Symbol();
let s2 = Symbol();

console.log(s1 === s2);
>> false

シンボルはユニークな値を簡単に作成できるのでオブジェクトのキーなどユニークな値が必要な場合に使われます。シンボルは作成するたびに、必ずユニークな値を作成するので、他と一致していないかどうか気にする必要がありません。

シンボルは は、データ型を調べる typeof 演算子の引数に指定すると symbol を返します。

console.log(typeof(Symbol()));
>> symbol

-- --

JavaScript で扱うデータ型に関する基本的事項を解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。