JavaScript 再入門(その2) データ型

データ型

JavaScriptで扱うことのできるデータの型は次のとおりです。
ほかにもError型などがあります。

undefined

データ型が未定義で値がない。

null

値がない (オブジェクト型)

Number

数値型 (浮動小数点数)

BigInt *ES2020

長整数型 (浮動小数点数)

String

文字列型

Boolean

論理型

Symbol *ES2015

シンボル型

Object

  • オブジェクト型
  • Function (関数)
  • Array (配列)
  • Date (日付)
  • RegExp (正規表現)
  • データ型は typeof 演算子で調べることができます。
var val1 ;
console.log(val1,typeof(val1)); // undefined 'undefined'
var val2 = null ;
console.log(val2,typeof(val2)); // null 'object'
var val3 = 123 ;
console.log(val3,typeof(val3)); // 123 'number'
var val4 = 123n ;
console.log(val4,typeof(val4)); // 123n 'bigint'
var val5 = 'SakuraString' ;
console.log(val5,typeof(val5)); // SakuraString string
var val6 = true ;
console.log(val6,typeof(val6)); // true 'boolean'
var val7 = Symbol() ;
console.log(val7,typeof(val7)); // Symbol(sakuraSymbol) 'symbol'
var val8 = { 'key' : 'sakuraObject' } ;
console.log(val8,typeof(val8)); // {key: 'sakuraObject'} 'object'
try{
	var valx = 2n + 5;
} catch (e) {
	console.log(e.name + ': ' + e.message ,typeof(e)) ; // TypeError: Cannot mix BigInt and other types, use explicit conversions object
}

実行結果

undefined 'undefined'
null 'object'
123 'number'
123n 'bigint'
SakuraString string
true 'boolean'
Symbol() 'symbol'
{key: 'sakuraObject'} 'object'
TypeError: Cannot mix BigInt and other types, use explicit conversions object

おまけの話

JavaScriptの全てのデータ型は、データ型のオブジェクトにプロトタイプ継承されています。
(nullはプロトタイプ継承しないオブジェクトで例外)

例えば、文字列型は「文字列型オブジェクトを継承するデータ型」といえます。
文字列を大文字に変換する toUpperCase() は次のように表現できます。

String.prototype.toUpperCase()

String オブジェクトにプロトタイプ継承した toUpperCase() メソッドとなります。

undefined は何もない状態。
null は全てのデータ型の始祖のオブジェクト、他のデータ型は null から派生する。
その他のデータ型や関数は、データ型や関数型のオブジェクトを継承するオブジェクト。
( object型も object というオブジェクトを継承するオブジェクト)

ややこしいなと、思った方は忘れてください。
別に知らなくても、どうってことはないです。

参考リンク

MDN 開発者向けのウェブ技術 > JavaScriptのデータ型とデータ構造
MDN 開発者向けのウェブ技術 > JavaScript「再」入門