js中数据类型判断

1.基本数据类型(5个)

number、string、boolean、undefined、null

2.引用数据类型

object

3.typeof和instanceof可以检测数据类型,下面我们来具体看下

 1) js中数据类型判断

null的类型为什么不是null而是object:

计算机检测返回数据类型的判断是根据机器码的后三位进行判断的,只有在后三位是000的时候是object,而null的话是很多0,所以它是object,关于基础数据类型我认为就是记住就好。

2) 下面我们实践一下引用数据类型,我们首先想到的肯定就是对象以及数组

js中数据类型判断

[]和{}没有问题,类型是object,那么function和Array的类型是如何判断的呢:

这个就和js的设计有关了,理论上他们应该也返回object,但是设计的时候后在js内部设计了一个call方法,如果有这个方法,那么就是object,没有的话就是function类型

3)直接声明的string和new出的string有什么不同

10s中思考一下。。。。

好,看答案

js中数据类型判断

直接声明的数据,它是开辟了一个栈来储存数据,这种声明类型一定为string,而new出来的数据,等于是一个实例对象,并且会已键值对的形式存储,如上图所示,类型的话就是object类型。

4. instanceof检测类型

返回值是boolean值,用法是A instanceof B,意思就是A是否是B实例化以后的数据,你也可以理解成instacnceof是A在B以及它的原型链上进行检测的:

毫无疑问,空数组[ ]是由Array实例化而来的,

[] instanceof Array ----------true

而[ ]也是由object实例化而来的,这个就是原型链上的实例化关系,A为[ ], B为Array,c为object

因为A由B实例化而来,Array是由object实例化而来,那么[ ]也是由object实例化而来。

同样我们想象instanceof肯定不能检测基本数据类型,例如: ‘str’ instanceof String一定为false,上面举的例子可以看到,这不是string实例化而来的,string实例化之后就变成了object了。

5.小结

有上面我们可以看到typeof无法检测出null类型,而instanceof也只能返回true或false无法确定数据是什么类型的,如果我们想精确知道数据类型可以使用下面object的原型的方法:

Object.prototype.toString.call('ssss'); // string

js中数据类型判断

大家可以亲自试一下~~

上一篇:instanceof关键字


下一篇:JS经典面试题---如何判断数组类型的数据