データ型
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「再」入門