データ型

Loading

どのようなプログラミング言語でも、値はなんらかのデータの種類に分類されます。

今回は、JavaScriptで扱えるデータ型について説明していきます。

目次

データ型とは

データ型とは、プログラムで扱えるデータの種類のことを言います。
前回の記事で変数や定数について学びましたが、変数に格納する値はJavaScriptでは8種類のデータ型のいずれかに分類されます。

以下のリストがJavaScriptで扱えるデータ型の全てになります。

  • String
  • Number
  • BigInt
  • Boolean
  • null
  • undefined
  • Symbol
  • Object

このうち、Object以外のデータ型をプリミティブ型と言いますので、用語を覚えておきましょう。

なぜデータ型があるのか

例えば、「2 + 3」というデータが変数に格納されたとしましょう。

let x = 2 + 3;

直感的に考えると、変数xに格納されるのは足し算が実行された「5」という値になりそうです。

しかし、この「2 + 3」という値を計算せずに文字として扱いたい場合は、足し算が実行されたら困るわけです。
そのためには、この「2 + 3」が計算式ではなく単なる文字列であることをプログラムに伝えなければなりません。
そのために存在するのがデータ型という概念なのです。

以下、各データ型について詳しく見ていきましょう。

データ型の説明

String – 文字列型

データを文字列として扱いたい場合は、値をシングルクォート(’)、ダブルクォート(”)、バッククォート(`)で囲みます。

let x = '2 + 3';
let y = "Hello";
let z = `文字列`;

ここで質問です。
シングルクォートとダブルクォートの両方の書き方があるのはなぜでしょうか?

例えば、「Helloは”こんにちは”という意味です」という文字列を考えてみましょう。
これを文字列として扱うためにダブルクォートを使ったとします。

let hello = "Helloは"こんにちは"という意味です";

しかし、この書き方はエラーになってしまいます。
なぜなら、「“Helloは”」の部分でダブルクォートがいったん閉じてしまっているからです。
同様に、「“という意味です”」の部分もそこだけダブルクォートで囲まれてるとプログラムは認識します。
そうすると、「こんにちは」の部分が何のデータかわからなくなってしまい、プログラムが「文法がおかしい」と判断してしまうのです。

このエラーを避けるためには、シングルクォートで囲む必要があります。

let hello = 'Helloは"こんにちは"という意味です';

こうすることで、意図しない部分でダブルクォートが途切れること無く、「Helloは”こんにちは”という意味です」という文全体が文字列と判断されます。

このように、シングルクォートで囲めば文字列の中にダブルクォートを使えるようになります。
同様に、ダブルクォートで囲めば文字列中にシングルクォートを使えるようになります。
この使い分けの仕方を覚えておきましょう。

また、バッククォートで囲む場合は、文字列中に「${変数名}」の形式で変数や定数を挿入することができます。

let hennsuu = "100";
let mizu = `水は${hennsuu}℃で沸騰します`;

console.log(mizu);
> 水は100℃で沸騰します

このように、バッククォートを使うと文字列中に変数の値を使うことができます。
便利な書き方なので覚えておきましょう。

Number – 数値型

データが数値であることを示すためには、単純に数値を入力すればOKです。

let x = 100;

これだけで変数xは数値型として扱われます。簡単ですね。

数値型は浮動小数点数、あるいは整数を取り扱うことができます。
扱える値の範囲が決まっており、-(253 – 1) ~ 253 – 1 の間の値を取ることが許されています。

BigInt – 整数型

BigIntは大きな整数を表すために利用されます。
BigIntを表すためには、数値の末尾に「n」をつけます。

let big = 12345n;

Number型との違いは、Numberでは扱える値の範囲が決まっていますが、BigIntでは任意の大きさの値を扱えるということです。

Boolean – 真偽値型

Booleanでは「true」「false」という二値を扱うことができます。
Booleanはフラグとして利用することができます。

let isHuman = true;
let isAnimal = false;

真偽値型は後に解説する条件分岐や、繰り返し処理で利用します。

基本的にはtrue、falseで真偽値を指定するのですが、中には真偽値型ではないけどfalseとみなされる値というものがあります。
これをfalsyな値と呼びます。

  • 0
  • 0n
  • “”
  • null
  • undefined
  • NaN

逆にこれら以外の値、例えば「1」などの数値や「”moji”」などの文字列は真偽値型のtrueとみなされます

条件分岐でこれらの知識が役に立つ場合がありますので、頭の片隅においておきましょう。

null – ヌル値

nullというのは特殊なデータで、「変数が値を持っていない」ことを表すデータです。

let x = null;

このように書くことで、xは値を持たないことを表現します。

undefined – 未定義

undefinedは、「変数が未定義である」ことを表すデータです。
未定義の変数を使おうとすると、その変数には自動的にundefinedが設定されます。

console.log(miteigi); // 変数miteigiはこれ以前に定義されていない
> undefined

Symbol – シンボル型

Symbol型は特殊な値で、一意の値を生成するときに使います。
しかし、この型は通常利用する機会はめったにありません。
そのため、ここでの説明は割愛します。
そういうデータ型があるんだな、という程度に理解しておいてください。

Object – オブジェクト

オブジェクトはJavaScriptではとても重要なデータになります。
JavaScriptのコードの大半は、このオブジェクト型を扱うことになるでしょう。
そのため、別の記事であらためて詳細を解説したいと思いますので、この記事では説明を割愛します。

オブジェクトはデータ型の中で唯一の非プリミティブ型であることは、ここで押さえておきましょう。

データ型の確認

変数に入った値がなんのデータ型であるかを調べる方法があります。
それがtypeof演算子と呼ばれるものです。

typeof演算子を利用すると、変数に入った値のデータ型を文字列で返してくれます。

let a = "hello";   // 文字列型
let b = 100;       // 数値型
let c = 200n;      // 整数型
let d = true;      // 真偽値型
let e = null;      // null
let f = undefined; // undefined
let g = {};        // オブジェクト

console.log(typeof a);
> string
console.log(typeof b);
> number
console.log(typeof c);
> bigint
console.log(typeof d);
> boolean
console.log(typeof e);
> object
console.log(typeof f);
> undefined
console.log(typeof g);
> object

注意して欲しいのが、nullの場合はtypeof演算子はobjectを返すという点です。
これはJavaScriptの古い言語仕様を変更することができず、仕方なく残しているという歴史的理由に由来します。

型変換

データ型を他のデータ型に変換することを型変換と呼びます。

型変換には明示的な型変換暗黙的な型変換の二通りがあります。

明示的な型変換

明示的な型変換にはJavaScriptに最初から用意されている関数を利用します。
型変換の関数には次の4種類があります。

  • String( 値 )
  • Number( 値 )
  • BigInt( 値 )
  • Boolean( 値 )
// String
console.log(String(1));
> "1"
console.log(String(true));
> "true"

// Number
console.log(Number("1"));
> 1
console.log(Number("hello"));
> NaN

// BigInt
console.log(BigInt("20"));
> 20n
console.log(BigInt(true));
> 1n

// Boolean
console.log(Boolean(1));
> true
console.log(Boolean(0));
> false

暗黙的な型変換

暗黙的な型変換とは、JavaScriptが自動的に型を判別して変換してくれることを指します。

たとえば、次の例では数値が文字列に自動的に変換されます。

console.log(1 + "2");
> "12"

上記では数値と文字列を+でつなげています。
+は数値の足し算や文字列の結合に使われる演算子ですが、数値と文字列が混合してる場合は、数値を暗黙的に文字列に変換して処理するため、上記のような結果になります。

このようにJavaScriptでは1つの文に複数のデータ型の値が含まれる場合は、型情報を統一して行うということを覚えておいてください。

まとめ

今回はデータ型について説明しました。

次の記事では、今回説明を割愛した「オブジェクト」について解説していこうと思います。