データ型一覧(基本型, 参照型, 型の確認方法)

JavaScriptで利用できる型一覧について解説します。「データ型の確認方法」「型変換」「真偽値判定」についても取り上げます。

基本型|値を格納

基本型とラッパーオブジェクト

基本型である、 数値型 文字列型 真偽型 は利用するとき、一時的に ラッパーオブジェクト を生成します。
ラッパーオブジェクト によって、オブジェクト( Number String Boolean )のメソッドを利用できます。

ラッパーオブジェクト の生成は自動的に行われるので、開発者は意識する必要はありません。

数値型

let number1 = 123
let number2 = 1.5

一時的にラッパーオブジェクトを生成し、オブジェクト(Number)として利用できます。

文字列型

let string = 'おはよう'

console.log(string.slice(1, 3))  // はよ
console.log(string.length)       // 4

一時的にラッパーオブジェクトを生成し、オブジェクト(String)として利用できます。

真偽型

let boolean = true

一時的にラッパーオブジェクトを生成し、オブジェクト(Boolean)として利用できます。

null

意図的に空である状態にしたいとき利用します。

let nullVar = null

undefined

定義されてない状態です。

// undefinedVarという変数はまだ定義していない
console.log(typeof undefinedVar)    // undefined

undefined であるかの判定は以下のようにします。

if (typeof x === 'undefined') {}

シンボル

ES2015で追加されました。

let symbol1 = Symbol('xxx')
let symbol2 = Symbol('xxx')

console.log(symbol1 === symbol2)  // false
console.log(symbol1 === symbol1)  // true

===演算子 で判定したとき、同じシンボルでないと true になりません。

利用例

const MAN = 0
const WOMAN = 1

console.log(MAN === MAN)  // true
console.log(MAN === 0)    // true

いままでですと、 MAN === 0 という判定処理ができてしまいました。

以下のようにシンボルを利用することで、可読性を下げる処理を記述できなくなります。

const MAN = Symbol()
const WOMAN = Symbol()

console.log(MAN === MAN)   // true
console.log(MAN === WOMAN) // false

参照型|アドレスを格納

配列

let array = [1, 2, 3]

console.log(array.length)  // 3

console.log(array.reduce((x, y) => {
  return x + y
}))  // 6

オブジェクト( 連想配列 )

JavaScriptにおいて オブジェクト連想配列 と同じです。

let object = {'key1': 'value1', 'key2': 'value2'}

console.log(object.key1)     // value1
console.log(object['key2'])  // value2

キーを変数で指定するには以下のようにします。

let key = 'aaaaa'
let object2 = {[key]: 'xxxxx'}

console.log(object2[key])  // xxxxx

多次元連想配列のときは、プロパティチェックが必要です。

let object = {
  'key1': {
  	'key1_1' : 'xxxx'
  }
}

console.log(object.key1 && object.key1.key1_1)  // xxxx

// key2をチェックせずにkey1_1を呼び出すと、下記エラーがでます。
// Uncaught TypeError: Cannot read property 'key1_1' of undefined
// 
// console.log(object.key2.key1_1)

// 以下のように、key2のチェックが必要です。
console.log(object.key2 && object.key2.key1_1)  // undefined

関数

let func = function (x, y) {
  return x + y
}
console.log(func(2, 5))  // 7

// アロー関数
let func2 = (x, y) => {
  return x + y
}
console.log(func2(2, 5))  // 7

データ型の確認方法

データ型を確認するには、typeof を利用します。

let string = 'おはよう'
let number = 123
let boolean = true
let nullVar = null
let array = ['apple', 'orange']
let object = {'key1': 'value1', 'key2': 'value2'}
let func = function () {}

console.log(typeof string)          // string
console.log(typeof number)          // number
console.log(typeof boolean)         // boolean
console.log(typeof nullVar)         // object
console.log(typeof undefinedVar)    // undefined
console.log(typeof array)           // object
console.log(array instanceof Array) // true
console.log(typeof object)          // object
console.log(typeof func)            // function

型変換

// 文字列を数値に変換
console.log(Number('1234'))   // 1234

// 数値を文字列に変換
console.log(String(1234))     // '1234'

// 真偽型に変換
console.log(Boolean(1234))    // true
console.log(Boolean('1234'))  // true

真偽値判定

// 以下全て偽と見なされます
console.log(undefined ? 1 : 0)  // 0
console.log(null ? 1 : 0)       // 0
console.log(false ? 1 : 0)      // 0
console.log(0 ? 1 : 0)          // 0
console.log(NaN ? 1 : 0)        // 0
console.log('' ? 1 : 0)         // 0

// 以下全て真と見なされます
console.log(true ? 1 : 0)           // 1
console.log(111 ? 1 : 0)            // 1
console.log('aaa' ? 1 : 0)          // 1
console.log([] ? 1 : 0)             // 1
console.log({} ? 1 : 0)             // 1
console.log(function () {} ? 1 : 0) // 1
わくわくBank.
フリーランスのエンジニアとして活動してます。ここでは、ソフトウェア開発で必要とされる技術、用語、概念を整理しています。