JS数据类型笔记——typeof运算符

118 阅读1分钟

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

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

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

比如:

typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"
typeof undefined // "undefined"
typeof window // "object"

值得一提的是typeof null // "object" ,null的类型返回的却是object。至于为什么,这是JS的一个BUG,是由于历史原因造成的。1995年的 JavaScript 语言第一版,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),没考虑null,只把它当作object的一种特殊值。后来null独立出来,作为一种单独的数据类型,为了兼容以前的代码。这其中还有另一个:

function f() {}
    typeof f
// "function"

明明并没有function的类型,却打印出function。

typeof运算符还可以用来检查一个没有声明的变量,而不报错。

typeof v
// "undefined"

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

另外空数组([])的类型也是object:

typeof {} // "object"
typeof [] // "object"