js数据类型为:null,undefined,boolean,number,string,symbol,object
根据复杂程度划分为:
(一)基本类型:null,undefined,boolean,number,string,symbol
(二)引用类型:object(包括Array和function等)
我们在判断数据类型时可以使用typeof,但是要注意typeof返回的数据类型分为两类,当所判断的是基本数据类型的时候,返回的值是基本数据类型(除了null,null的返回值是object,但是function的返回值是function),但是当你判断的是引用类型的时候,返回的是object,比如Array会返回object,所以使用typeof无法判断出具体的引用类型,typeof返回值如下表:
当我们想要判断一个元素是否是数组的时候,可以使用如下方法:
(1)isArray():
isArray() 方法用于判断一个对象是否为数组。如果对象是数组返回 true,否则返回 false。(Value是要检测的值)
用法:Array.isArray(Value)
(2)instanceof(也可以用来判断继承关系,但是不可以判断null和undefined,浏览器认为null和undefined不是构造器)
instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上
用法: Value instanceof Array
(3)当没有isArray的时候可以用如下方式:
if (!Array.isArray) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
}
原因: Object.prototype.toString方法会取得对象的一个内部属性[[Class]],然后依据这个属性,返回一个类似于[object Array]的字符串作为结果,call用来改变toString的this指向为待检测的对象,同时可以利用这个方法来检测是否是function
可以参考如下链接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
https://www.cnblogs.com/sakura-sakura/p/6678264.html
https://blog.csdn.net/zjy_android_blog/article/details/81023177