未経験からエンジニアになりたい人必見!
おすすめプログラミングスクール3選!

【JavaScript】型の種類と調べ方について

本記事では、JavaScriptの型の種類や調べ方について解説しています。

JavaScriptの学習におすすめ参考書
改訂新版JavaScript本格入門

参考書が苦手な人はUdemyの動画がおすすめ
ガチで学びたい人のためのJavaScriptメカニズム

作成者 CodeMafia
学習時間 20.5時間
受講者数 16,593人
レビュー (2,383件)

型の種類

JavaScriptには全部で9種類の方が存在します。それぞれの型についての詳細は以下の通りです。

型名意味
Number数値123
String文字列“SAMPLE”
Boolean真偽値true
false
Function関数function(){}
() => {}
Objectオブジェクト{test:”テスト”}
SymbolシンボルSymbol()
BigIntBigInt2n
Undefined未定義undefined
Null空 / nullnull
型の種類表

動的型付け言語と静的型付け言語

プログラミングには動的型付け言語と静的型付け言語があります。

JavaScriptは動的型付け言語で、変数を宣言する時に型を指定する必要はありません。JavaScript側で変数に代入される値によって型が変更されます。

例えば、最初に数値を入れていた変数に対して文字列を代入した場合、型はnumber->stringに変更されます。

静的型付け言語とはJavaやC言語などが該当します。JavaScriptに型宣言することができるTypeScriptも静的型付け言語になります。

暗黙の型変換

JavaScriptには暗黙の型変換というものがあります。これは先程触れた動的型付け言語は代入される値によって型を変更するためです。

実際にどのような時に暗黙の型変換がされるのか確認しましょう。

JavaScript
let num = 5;
console.log(num); // -> 5
console.log(typeof num); // -> number

num = num + "5";
console.log(num); // -> "55"
console.log(typeof num); // -> string  * 数値と文字列を足した場合、文字列になる

num = num - 10;
console.log(num); // -> "45"
console.log(typeof num); // -> number  * -(マイナス)記号は計算式でしか使用されないため、数値になる

typeof演算子

JavaScriptで変数の型を調べたい場合はtypeof演算子を使うことで確認できます。

使い方はtypeof演算子の後に型を調べたい変数を入力します。

JavaScript
/* Number */
let num = 123;
console.log(typeof num); // -> number

/* String */
let str = "SAMPLE";
console.log(typeof str); // -> string

/* Boolean */
let bl = true;
console.log(typeof bl); // -> boolean

/* Function */
let fn = function () {};
console.log(typeof fn); // -> function

/* Object */
let obj = {
  name: "Tanaka",
};
console.log(typeof obj); // -> object

/* Symbol */
let sy = Symbol();
console.log(typeof sy); // -> symbol

/* BigInt */
let bi = 2n;
console.log(typeof bi); // -> bigint

/* Undefined */
let ud = undefined;
console.log(typeof ud); // -> undefined

/* Null */
let nl = null;
console.log(typeof nl); // -> object

nullが代入されている変数がtypeof演算子を使うとobjectと判定されていますが、これは公式が認めている言語エラーです。nullの詳細は判定方法は次の見出しで解説します。

Object.prototype.toString.call()

typeof演算子ではプリミティブ型(numberやstringなど)は判別することができますが、オブジェクト・配列・nullなどを判別することができません。

これらの情報を判別するには、Object.prototype.toString.call()を使います。

JavaScript
let nl = null;
console.log(Object.prototype.toString.call(nl)); // -> [object Null]

if(Object.prototype.toString.call(nl) === "[object Null]"){
  /* 値がnullの時だけここの処理をするよ! */
}

型を使った条件分岐の書き方

変数の型によって異なる処理を実装したい場合は、以下のように条件分岐を使うことで実装することができます。

JavaScript
/* typeof演算子の場合 */

let val1 = "値";
if(typeof val1 === "一致させたい型"){
  /* ここに条件が一致した型のみに実行する処理を記述 */
}

/* Object.prototype.toString.call()の場合 */

let val2 = "値";
if(Object.prototype.toString.call(val2) === "一致させたい型"){
  /* ここに条件が一致した型のみに実行する処理を記述 */
}