常用的判断数据类型的方法
一、数据类型有什么?
数据类型分为两大类:
- 值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
- 引用数据类型:对象(Object)、数组(Array)、函数(Function)。
其中Symbol 是 ES6 引入的一种新的原始数据类型,表示独一无二的值。
二、如何判断数据类型
1.typeOf 数据名
代码如下:
typeof a //'undefined'
typeof true //'boolean'
typeof '123' //'string'
typeof 123 //'number'
typeof NaN //'number'
typeof null //'object'
var obj = {}; typeof obj //'object'
var arr= ['1','2','3']; typeof arr//'object'
2.数据名 instanceof 类型
代码如下:
'a' instanceof String // false
new Object() instanceof Object // true
function getObject() {}
let a = new getObject()
a instanceof Object // true
[1, 2, 3] instanceof Array // true
new Date() instanceof Date // true
123 instanceof Number // false
true instanceof Boolean // false
3.toString.call(数据)
代码如下:
toString.call('a') // '[object String]'
toString.call(new Object()) // '[object Object]'
toString.call(function a(){}) // '[object Function]'
function asd() {}
toString.call(new asd()) // '[object Object]'
toString.call([1,2,3]) // '[object Array]'
toString.call(new Date()) // '[object Date]'
toString.call(123) // '[object Number]'
总结
以上三种方式的优缺点如下:
1、typeof
优点:能够检查 undefine,string,number,boolean类型
缺点:不能区分 null,object,array三者输出均为object
2、instanceof
优点:能够检查 object、array、function类型
缺点:不能区分 string、number、boolean三者输出均为false
1、toString.call
优点:能够区分所有类型
缺点:由于返回结果较长,当作为判断条件使用时书写比较麻烦