最近の記事
- 4/24 - 優先順位
- 3/17 - vbNullString と 空文字列 ""
- 3/15 - InputBox 関数の戻り値
- 3/13 - 紙と Excel と VBA
- 3/9 - 未だに Visual Basic 6
- 11/14 - ぼて閉鎖
- 11/9 - 関数オブジェクトの呼び出し
- 9/7 - メソッドとしての関数オブジェクト
- 8/18 - コンストラクタとしての関数オブジェクト
- 8/4 - オブジェクトの生成
Entering Passive Mode
JavaScript のプリミティブ型には、5 つの型が存在する。
そのうち、基本データを表す 3 つを挙げてみよう。
これらがどのようなデータなのかは説明不要だろう。
プリミティブということに、違和感を感じる人は多いと思う。
というのも、Boolean, Number, String の 3 つの型は、
オブジェクトとして、良く知られているからだ。
実は、これら 3 つの型に関しては、
プリミティブ型とオブジェクト型の両方が存在する。
プリミティブ型としてのこれらは、
プロパティを持たない、純粋なデータとして扱われる。
これらが具体的にどこで出現するかというと、
「リテラル値」として記述された場合だ。
例えば、リテラル値 「true」 は、Boolean プリミティブ値だ。
リテラル値 「0」 は、Number プリミティブ値だ。
リテラル値 「"foobar"」 は、String プリミティブ値だ。
オブジェクトかプリミティブかを調べるためには、
typeof 演算子を使うことができる。
typeof true は、"boolean" という文字列を返すが、
typeof new Boolean(true) は "object" という文字列を返す。
暗黙の型変換を行わない、厳密な比較演算子 === を使えば
true === new Boolean(true) は false を返す。
つまり、true はプリミティブ値であり、
new Boolean(true) はオブジェクトであり、
両者は異なる型として認識されているということが分かる。
コメント (0 件)