87-js-3-typeof运算符

概述

JavaScript 有三种方法,可以确定一个值到底是什么类型。

  • typeof运算符
  • instanceof运算符
  • Object.prototype.toString方法

typeof运算符可以返回一个值的数据类型。

语法

它支持两种语法形式:

  1. 作为运算符:typeof x
  2. 函数形式:typeof(x)

案例

typeof undefined // "undefined"

typeof 0 // "number"

typeof 10n // "bigint"

typeof true // "boolean"

typeof "foo" // "string"

typeof Symbol("id") // "symbol"

typeof Math // "object"  (1)

typeof null // "object"  (2)

typeof alert // "function"  (3)
  1. Math 是一个提供数学运算的内建 object
  2. null的类型是object,这是由于历史原因造成的。1995年的 JavaScript 语言第一版,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),没考虑null,只把它当作object的一种特殊值。后来null独立出来,作为一种单独的数据类型,为了兼容以前的代码,typeof null返回object就没法改变了。
  3. typeof alert 的结果是 "function",因为 alert 在 JavaScript 语言中是一个函数。

用法

typeof 只有一个实际的应用, 而这个应用却不是用来检查对象的类型,这个实际应用是用来检测一个对象是否已经定义或者是否已经赋值。

v
// ReferenceError: v is not defined

typeof v
// "undefined"

上面代码中,变量v没有用var命令声明,直接使用就会报错。但是,放在typeof后面,就不报错了,而是返回undefined

实际编程中,这个特点通常用在判断语句。

// 错误的写法
if (v) {
  // ...
}
// ReferenceError: v is not defined

// 正确的写法
if (typeof v === "undefined") {
  // ...
}

推荐阅读

typeof 运算符

typeof 运算符

MDN-typeof