Fork me on GitHub

typeof返回值

js基本数据类型

js里面基本数据类型分为原始值和引用值两大类。

其中原始值包括数字number,字符串string,布尔值boolean,undefined,null五种。

引用值包括数组array,对象object,函数function三种。

typeof判断数据类型

当传入一个变量时,可以用typeof来判断基本的数据类型。

根据传入的数据类型进行划分,typeof的返回值包括”number” ,”string” ,”boolean” ,”undefined” , “object” , “function”六种

其调用形式如下:
(1)typeof num
(2)typeof(num)

其中,typeof后面跟的为需要判断数据类型的变量。传入的变量可以直接跟在typeof后面以空格分隔开,也可以直接写在括号里

看如下例子:

1
2
3
typeof 123;        //"number"
typeof NaN; //"number"
typeof Infinity; //"number"

但凡是数学计算能产生的结果都是数字类型,数字类型的返回值为”number”

1
2
3
4
5
var str = '123abc';
typeof str; //"string"
typeof +str; //"number"
typeof !!str; //"boolean"
typeof str + ''; //"string"

输入一个字符串,字符串可以通过运算符改变其类型,typeof会根据类型返回特定的值

1
typeof a;    //"undefined"

在js中,一个变量未经声明就使用,只有在一种情况下不会报错,那就是将变量放在typeof里面查看类型

综上总结,可以将基本数据类型和typeof的返回值做如下对应关系:
typeof的返回值: “number” ,”string” ,”boolean” ,”undefined” , “function” ,”object”
返回值为”number”包括:数字类型(number)
返回值为”string”包括:字符串类型(string)
返回值为”boolean”包括:布尔值(boolean)
返回值为”undefined”包括:undefined(即值未定义)
返回值为”function”包括:函数function
比较特殊的是,返回值为”object”包括:null,数组array,对象object

所以当需要判断具体的”object”类型时,需要对null,array,object进行判断

注意点

typeof的返回值均为字符串,即number类型的字符串,string类型的字符串,boolean类型的字符串,undefined类型的字符串,function类型的字符串,object类型的字符串

即typeof(typeof “number”) => “string”

特殊情况

考虑以下情况,当基本数据类型的首字母大写时,相应的typeof是否也会发生改变呢?

1
2
3
4
5
6
7
8
typeof Number       //"string"
typeof String //"string"
typeof Boolean //"string"
typeof Undefined //"undefined"
typeof Null //"undefined"
typeof Array //"string"
typeof Object //"string"
typeof Function //"string"

总结起来就是
返回值为”string”包括:Number / String / Boolean / Array / Object / Function
返回值为”undefined”包括:Undefined / Null