<p>
鑒于 ECMAScript 是松散類型的,因此需要有一種手段來檢測給定變量的數據類型——typeof 就是負責提供這方面信息的操作符。對一個值使用 typeof 操作符可能返回下列某個字符串:
</p>
<ul>
<li>
"<code>undefined</code>"——如果這個值未定義;
</li>
<li>
"<code>boolean</code>"——如果這個值是布爾值;
</li>
<li>
"<code>string</code>"——如果這個值是字符串;
</li>
<li>
"<code>number</code>"——如果這個值是數值;
</li>
<li>
"<code>object</code>"——如果這個值是對象或 <code>null</code>;
</li>
<li>
"<code>function</code>"——如果這個值是函數。
</li>
</ul>
<p>
下面是幾個使用 typeof 操作符的例子:
</p>
<pre>var message = "some string";
alert(typeof message); // "string"
alert(typeof(message)); // "string"
alert(typeof 95); // "number"</pre>
<a href="http://www.shouce.ren/study/api/s/8349" target="_blank" class="btn btn-sm btn-success">運行一下</a><br />
<p>
這幾個例子說明, <code>typeof</code>操作符的操作數可以是變量(<code>message</code>),也可以是數值字面量。注意,<code>typeof</code>是一個操作符而不是函數,因此例子中的圓括號盡管可以使用,但不是必需的。
</p>
<p>
有些時候, <code>typeof</code>操作符會返回一些令人迷惑但技術上卻正確的值。比如,調用 <code>typeof null</code>會返回"<code>object</code>",因為特殊值 <code>null</code>被認為是一個空的對象引用。 Safari 5 及之前版本、 Chrome 7 及之前版本在對正則表達式調用 <code>typeof</code>操作符時會返回"<code>function</code>",而其他瀏覽器在這種情況下會返回"<code>object</code>"。
</p>
<blockquote>
從技術角度講,函數在 ECMAScript 中是對象,不是一種數據類型。然而,函數也確實有一些特殊的屬性,因此通過 typeof 操作符來區分函數和其他對象是有必要的。
</blockquote>