小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


JavaScriptのtypeof演算子は判定できる型が限られている

JavaScriptにおいて、引数として与えられた値の型を調べることのできるtypeof演算子というものがあります。このtypeof演算子は判定できる型が限られているようです。
以下のエントリのコメント欄で知りました。

リファレンスを見てみると、以下の型以外は、objectと返す仕様になっているようです。

  • Undefined
  • Null
  • Boolean
  • Number
  • String
  • Host object (provided by the JS environment)*1
  • Function object (implements Call in ECMA-262 terms)
  • E4X XML object
  • E4X XMLList object

typeof Operator - MDC はてなブックマーク - typeof Operator - MDC

以下、Firefox3.6の環境で実行してみました。

undefined
var a = undefined;
alert(typeof a);
>>undefined
null
var a = null;
alert(typeof a);
>>object
boolean
var a = true;
alert(typeof a);
>>boolean
number
var a = 0;
alert(typeof a);
>>number
string
var a = "hoge";
alert(typeof a);
>>string
function
var a = function() {}
alert(typeof a);
>>function
array
var a = new Array()
alert(typeof a);
>>object

*1:Hostオブジェクトは、実装によって返す値が異なります。Hostオブジェクトとは、言語仕様では定義されていなくて、ブラウザごとの実装が提供するオブジェクトのことを指すらしいです。windowやXMLHttpRequestなど。