JavaSprictのデータ構造。
JavaScriptの型について
JavaScriptにはオブジェクト型とプリミティブ型の2種類が存在する。
- オブジェクト型(構造型) 値:mutable 属性:プロパティやメソッドを持つ。
- プリミティブ型(データ型) 値:immutable 属性:プロパティやメソッドを持たない。
プリミティブ型は真偽値や数値などの基本的な型のことです。プリミティブ型の値は、一度作成したらその値を変更することができません。この独特な特徴をimmutableと言います。
オブジェクト型は、複数のプリミティブ型の値またはオブジェクトからなる集合体です。オブジェクトは、一度作成した後も、その値自体を変更することができます。この独特な特性をmutaleと言います。
オブジェクト型
オブジェクト型は以下のものが含まれます。
- プリミティブ型以外のデータ
- Object(オブジェクト)
- Array(配列)
- Function(関数)
- StringやNumberなどのオブジェクト
- Date
- 正規表現
- JSON
プリミティブ型以外ではないものは、全てオブジェクト型になります。
console.log(typeof ["pokemon"]);
console.log(typeof { name: "pokemon" });
console.log(typeof function() {});
//=> object
//=> object
//=> function
一つ注意なのが、配列とオブジェクトがどちらもobjectと判定されているように、全てのオブジェクトの種類を判定することはできません。そのため、基本的にはtypeof演算子は、プリミティブ型かオブジェクト型かを判別するために使われます。
プリミティブ型
プリミティブ型は以下のものが含まれます。
- Boolean型
- Number型
- BigInt型
- String型
- Symbol型
- String型
- Null型
- Undefined型
こちらもtypeofで確認していきます。
console.log(typeof "Pokemon");
console.log(typeof false);
//=> "string"
//=> "boolean"
それぞれの型の定義するにリテラルを使用します。リテラルとは、プログラム上で数値や文字列など、データ型の値を直接記述できるように構文として定義されたものです。Symbol型とUndefined型以外のプリミティブ型には、リテラルが用意されています。
undefined型
undefinedは、宣言のみが行われた変数、あるいは引数が存在しない仮引数に自動的に割り当てられるプリミティブ値のこと。
###Boolean型
booleanはtrueかfalseの値のみを取れる論理データ型です。例えば、JavaScriptではbooleanによる条件がコードの部分を実行するかや繰り返しなどを決定します。
console.log(typeof true)
// => true
###Number型
Number型とは、数値を扱うためのデータ型です。JavaScriptのNumber型では、整数も小数も同じNumber型として扱われます。Number型には、10や-7などの数値リテラルと1.4や5.4e3などの浮動小数点リテラルがあります。
console.log(typeof 111)
// => number
BigInt型
BigInt型とは、Number型で取り扱うことのできない大きな数値を扱うためのデータ型です。ES2020で追加されました。Number型との互換性はなく、相互に代入や計算・等価比較などは行うことができません。
###Symbol型
Symbol型とは、「シンボル値」という固有の識別子を表現する値で、任意の不変な値のデータ型です。
Symbol()関数を呼び出すことで同的に生成されます。同じシンボル値を後から生成することはできません。オブジェクトのプロパティキーとして使用することができます。
###String型
テキストを表す連続した文字である文字列を扱うためのデータ型です。"Pokemon"のように囲んだ範囲が文字列リテラルとなります。
console.log(typeof "pokemon")
//=> string
Null型
Null型とは、値が存在しないことを意味するデータ型です。
nullリテラルであるnullは、プリミティブ値nullを返します。
console.log(typeof null);
//=>object
##まとめ
オブジェクト型とプリミティブ型について書いてみました。改善点や修正点がありましたらご指摘、アドバイスいただけると幸いです。
よろしくお願い致します。