JS判断数据类型

typeof

typeof 操作符返回一个字符串,表示未经计算的操作数的类型。

typeof 总是返回一个字符串

typeof 可能的返回值

类型 结果
undefined “undefined”
Null “object”
Boolean “boolean”
Number “number”
String “string”
Function “function”

typeof常用于检测基本数据类型(Number,String,Boolean等)

1
2
3
4
typeof 123;// "number"
typeof "hello js" //"string"
typeof true; //"boolean"
typeof function(){}; //"function"

instanceof

instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

instanceof 常用于检测引用数据类型(Array,Object,RegExp等)

Object.prototype.toString

可以通过 toString() 来获取每个对象的类型。为了每个对象都能通过 Object.prototype.toString() 来检测,需要以 Function.prototype.call() 或者 Function.prototype.apply() 的形式来调用,传递要检查的对象作为第一个参数,称为 thisArg

1
2
3
4
5
6
7
8
9
10
var toString = Object.prototype.toString;

toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]

//Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]

Object.prototype.toString.call() 可以较为全面的检测基本数据类型和引用数据类型

注意:此方法对低版本IE浏览器不能做到全面兼容


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!