判断数据类型的方法
数据类型
- 值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol(es6引入)。
- 引用数据类型:对象(Object)、数组(Array)、函数(Function)。
判断数据类型的方法
-
typeof:主要用于检测基本数据类型,判断引用类型时只能区分object,undefined和function
typeof的返回值有哪些: 1. undefined // 声明和未初始化的变量,使用typeof都会返回Undefined 2. boolean 3. string 4. number 5. object // 当是object、null、array时 6. function // 函数是对象,不是一种数据类型,因为特殊,typeof把它从对象中区分出来。typeof 正则也返回function)
-
instanceof:主要用于引用数据类型的检测,判断同一个作用域下,一个对象/类是否是另一个对象/类的实例。会一直递归到最终原型。基本数据类型没有父类型,都会返回false
变量是给定引用类型的实例,instanceof操作符就会返回true,例如:
person instanceof Object
arr instanceof Array
pattern instanceof RegExp
ps:intanceof是检测某一个类型是否是目标的超类(父类或者祖先类)
- Object.prototype上的原生toString():可以用于检测基本和引用数据类型,任何值上调用Object原生的toString方法,都会返回一个[object objectNativeConstrucName]格式的字符串,通过这种方法来判断变量的数据类型。
例如:
//返回[object Undefined]
//call在这里用于绑定this
Object.prototype.toString.call(undefined)
经典问题:
判断一个对象是不是数组:
value instanceof Array
Array.isArray(value)
Object.prototype.toString.call(value) // [object Array]
刚刚的梦想自述:坚持代码进化,坚持从程序猿到程序员~
个人博客地址:https://ggymx.top