#データ型の概要
導入
JavaScript 言語のすべての値は、特定のデータ型に属します。 JavaScript には 6 つのデータ型があります。 (ES6 では、新しい Symbol および BigInt データ型が追加されていますが、これらについてはこのチュートリアルでは説明されていません。)
- 数値: 整数と小数 (「1」や「3.14」など)。
- 文字列: テキスト (「Hello World」など)。
- ブール値: 信頼性を表す 2 つの特別な値、つまり
true
(真) とfalse
(偽)。 unknown
: 「未定義」または存在しないことを意味します。つまり、現在定義されていないため、ここには値がありません。null
: null 値、つまりここでの値が空であることを示します。- オブジェクト: さまざまな値の集合。
一般に、値、文字列、ブール値の 3 つのタイプを総称してプリミティブ型値と呼びます。つまり、最も基本的なデータ型であり、細分化することはできません。オブジェクトは多くの場合、複数のプリミティブ型の複合体であり、さまざまな値を格納するコンテナーと見なすことができるため、オブジェクトは複合型値と呼ばれます。 unknown
と null
については、一般に 2 つの特別な値とみなされます。
オブジェクトは最も複雑なデータ型で、3 つのサブタイプに分類できます。
- 狭義の物体
- 配列
- 関数
狭義のオブジェクトと配列は、特に明記されていない限り、データを組み合わせる 2 つの異なる方法です。このチュートリアルでの「オブジェクト」は、特に狭義のオブジェクトを指します。関数は実際にはデータを処理するメソッドであり、JavaScript は変数に割り当てることができるデータ型として扱います。これにより、プログラミングに大きな柔軟性がもたらされ、JavaScript の「関数型プログラミング」の基礎が築かれます。
演算子の種類
JavaScript には、値の型を判断する 3 つの方法があります。
typeof
演算子instanceof
演算子Object.prototype.toString
メソッド
「instanceof」演算子と「Object.prototype.toString」メソッドは後で紹介します。ここでは「typeof」演算子を紹介します。
typeof
演算子は値のデータ型を返すことができます。
数値、文字列値、およびブール値は、それぞれ number
、string
、および boolean
を返します。
typeof 123 // "数値"
typeof '123' // "文字列"
typeof false // "ブール値"
関数は「関数」を返します。
関数 f() {}
f型
// "関数"
「未定義」は「未定義」を返します。
未定義のタイプ
// "未定義"
これを利用して、「typeof」を使用すると、エラーを報告せずに未宣言の変数をチェックできます。
v
// ReferenceError: v が定義されていません
v のタイプ
// "未定義"
上記のコードでは、変数 v
は var
コマンドで宣言されていないため、変数 v
を直接使用するとエラーが報告されます。ただし、typeof
の後に配置した場合、エラーは報告されませんが、unknown
が返されます。
実際のプログラミングでは、この機能は判定文で使用されることが多いです。
//書き方が間違っています
if (v) {
// ...
}
// ReferenceError: v が定義されていません
// 正しい書き方
if (typeof v === "未定義") {
// ...
}
オブジェクトは「オブジェクト」を返します。
ウィンドウの種類 // "オブジェクト"
typeof {} // "オブジェクト"
typeof [] // "オブジェクト"
上記のコードでは、空の配列 ([]
) の型も object
です。これは、JavaScript 内では、配列は本質的に単なる特殊な種類のオブジェクトであることを意味します。ちなみに、instanceof 演算子は配列とオブジェクトを区別できます。 「instanceof」演算子の詳細な説明については、「オブジェクト指向プログラミング」の章を参照してください。
var o = {};
var a = [];
o 配列のインスタンス // false
配列のインスタンス // true
「null」は「オブジェクト」を返します。
typeof null // "オブジェクト"
「null」の型は「object」ですが、これは歴史的な理由によるものです。 1995 年の JavaScript 言語の最初のバージョンでは、5 つのデータ型 (オブジェクト、整数、浮動小数点数、文字列、およびブール値) のみが設計されており、 null
は考慮されておらず、単に object
の特別な値として扱われていました。その後、以前のコードとの互換性を保つために、null
は別のデータ型として独立し、typeof null
は object
を返し、変更できなくなりました。
参考リンク
- Axel Rauschmayer、JavaScript typeof 演算子の改善
作者: wangdoc
アドレス: https://wangdoc.com/
ライセンス: クリエイティブ・コモンズ 3.0