Object 类型和 symbol 类型
object
类型是一个特殊的类型。
其他所有的数据类型都被称为“原始类型”,因为它们的值只包含一个单独的内容(字符串、数字或者其他)。相反,object
则用于储存数据集合和更复杂的实体。
symbol
类型用于创建对象的唯一标识符。
typeof 运算符
typeof
运算符返回参数的类型。当我们想要分别处理不同类型值的时候,或者想快速进行数据类型检验时,非常有用。
它支持两种语法形式:
- 作为运算符:
typeof x
。 - 函数形式:
typeof(x)
。
换言之,有括号和没有括号,得到的结果是一样的。
对 typeof x
的调用会以字符串的形式返回数据类型:
typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"
typeof Math // "object"
typeof null // "object"
typeof alert // "function"
最后三行做例外的说明:
Math
是一个提供数学运算的内建object
。我们会在 数字类型 一节中学习它。此处仅作为一个object
的示例。typeof null
的结果是"object"
。这是官方承认的typeof
的行为上的错误,这个问题来自于 JavaScript 语言的早期,并为了兼容性而保留了下来。null
绝对不是一个object
。null
有自己的类型,它是一个特殊值。typeof alert
的结果是"function"
,因为alert
在 JavaScript 语言中是一个函数。我们会在下一章学习函数,那时我们会了解到,在 JavaScript 语言中没有一个特别的 “function” 类型。函数隶属于object
类型。但是typeof
会对函数区分对待,并返回"function"
。这也是来自于 JavaScript 语言早期的问题。从技术上讲,这种行为是不正确的,但在实际编程中却非常方便。
参考链接:
https://zh.javascript.info/types