> For the complete documentation index, see [llms.txt](https://lochiwei.gitbook.io/web/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lochiwei.gitbook.io/web/js/val/type/name/typeof.md).

# typeof

type of a value.

* [JS](/web/js.md) ⟩ [value](/web/js/val.md) ⟩ [type](/web/js/val/type.md) ⟩ [name](/web/js/val/type/name.md) ⟩ typeof
* [JS](/web/js.md) ⟩ [operator](/web/js/grammar/op.md) ⟩ [unary](/web/js/grammar/op/unary.md) ⟩ typeof

{% hint style="success" %}
([unary operator](/web/js/grammar/op/unary.md)) <mark style="color:yellow;">**determines**</mark> the [type](/web/js/val/type.md) of a [value](/web/js/val.md). (:point\_right: [type name](/web/js/val/type/name.md))
{% endhint %}

{% tabs %}
{% tab title="🧨 雷區" %}
{% hint style="danger" %}
:no\_entry:[typeof let/const/class in TDZ gets an error❗️](/web/js/variable/access/tdz/typeof-let-const-class-in-tdz-gets-an-error.md)
{% endhint %}
{% endtab %}

{% tab title="🗺️ 圖解" %}

* 👉 compare： [typeName()](/web/js/val/type/name/typename.md)

<table><thead><tr><th width="73" data-type="number">#</th><th width="124">Result</th><th>Types</th></tr></thead><tbody><tr><td>1</td><td>'boolean'</td><td><a data-mention href="/web/js/val/prim/boolean.md">Boolean</a></td></tr><tr><td>2</td><td>'string'</td><td><a data-mention href="/web/js/val/prim/str.md">String</a></td></tr><tr><td>3</td><td>'number'</td><td><a data-mention href="/web/js/val/prim/num.md">Number</a></td></tr><tr><td>4</td><td>'bigint'</td><td><a href="https://developer.mozilla.org/en-US/docs/Glossary/BigInt">BigInt</a></td></tr><tr><td>5</td><td>'symbol'</td><td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol">Symbol</a></td></tr><tr><td>6</td><td>'undefined'</td><td><a href="https://developer.mozilla.org/en-US/docs/Glossary/undefined">undefined</a></td></tr><tr><td>7</td><td>'<mark style="color:yellow;"><strong>function</strong></mark>'</td><td><ul><li><a data-mention href="/web/js/val/func.md">function</a></li><li><a data-mention href="/web/js/val/obj/method.md">method</a></li><li><a data-mention href="/web/js/val/func/arrow.md">arrow function</a></li><li><a data-mention href="/web/js/iteration/generator/func.md">generator function</a></li><li><a data-mention href="/web/js/val/class.md">class</a></li></ul></td></tr><tr><td>8</td><td>'<mark style="color:red;"><strong>object</strong></mark>'</td><td><ul><li><a href="https://developer.mozilla.org/en-US/docs/Glossary/Null">null</a> ( <mark style="color:yellow;"><strong>null</strong></mark> is a <a data-mention href="/web/js/val/prim.md">primitive</a>❗️)</li><li><p><mark style="color:orange;"><strong>any other objects</strong></mark>, like</p><ul><li><a data-mention href="/web/js/val/builtin/object.md">Object</a></li><li><a data-mention href="/web/js/val/builtin/arr.md">Array</a></li><li><a data-mention href="/web/js/val/builtin/regex.md">RegExp</a></li><li>Date</li><li><a data-mention href="/web/js/val/obj/create/obj.md">object literal</a></li><li><mark style="color:yellow;"><strong>instances</strong></mark> of <a data-mention href="/web/js/val/class.md">class</a> </li><li>...</li></ul></li></ul></td></tr></tbody></table>
{% endtab %}

{% tab title="⭐️ 重點" %}
{% hint style="danger" %}

```javascript
typeof null === "object"    // true
```

{% endhint %}
{% endtab %}

{% tab title="👥 相關" %}

* [typeName()](/web/js/val/type/name/typename.md) - <mark style="color:yellow;">**refined**</mark> version of <mark style="color:purple;">**typeof**</mark>.
  {% endtab %}

{% tab title="📘 手冊" %}

* [typeof](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof)
  {% endtab %}
  {% endtabs %}
