……

判断数据类型的方法

数据类型

  • 值类型(基本类型):字符串(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]
posted @ 2020-03-25 11:24  getLove(ymx)  阅读(575)  评论(0编辑  收藏  举报