最近の記事
- 4/22 - 思い出の紙時計
- 3/29 - さくらインターネットの VPS リニューアル
- 3/19 - SSHD への攻撃を分析してみた
- 3/9 - キーボードの過酷さ
- 3/8 - .NET のパフォーマンスについて
- 3/7 - phpMyAdmin への攻撃
- 3/1 - ミイラ取りがミイラになりかけた
- 2/22 - URL を知らなければ安全だと?
- 2/16 - 決意
- 1/30 - ルーターの UPnP 対応状況
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 件)