js中的数据类型主要分为基本类型和引用类型两大类:
基本类型:string、number、boolean、symbol(es6增加)、undefined、null 、undefined
NaN属于number的特殊值
引用类型:object、Array、包装类(new Number())、Function 、RegExp、Date
null属于object,历史预留问题
检测变量的数据类型:
1、typeof
typeof 是一个操作符,其右侧跟一个一元表达式,并返回这个表达式的数据类型。返回的结果用该类型的字符串(全小写字母)形式表示,包括以下 7 种:number、boolean、symbol、string、object、undefined、function 等,且返回的都以字符串形式进行返回。
2、instanceof
instanceof 是用来判断 A 是否为 B 的实例,表达式为:A instanceof B,如果 A 是 B 的实例,则返回 true,否则返回 false。
3、constructor
4、toString
toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。
Object.prototype.toString.call(
''
) ;
// [object String]
参考链接:https://www.cnblogs.com/onepixel/p/5126046.html
在区分object的时候,可能要对包装类和基本类型进行一个区分:比如type(1)返回number,type(new Number(1))返回[object number]类型
//判断数据类型
function type(data){
var type = typeof(data);
if(type == 'object'){
var obj = Object.prototype.toString;
type = obj.call(data)
}
return type;
}