js-检测数据类型

1.typeof

  • typeof检测出来的是一个字符串
  • 字符串中包含对应的类型
  • 局限性

    

 *   1. typeof null => "object"  但是null并不是对象
 *   2. 基于typeof无法细分出当前值是普通对象还是数组对象等,因为只要是对象数据类型,返回的结果都是"object"
//数值类型
let number = 1;
console.log(typeof number) //=>'number'
//字符串类型
let number1 = '123';
console.log(typeof number1) //=>'string
//boolean类型
let number3 = true; 
console.log(typeof number3)' //=>'boolean'
//null
console.log(typeof null) //=>'object'
//NaN
console.log(typeof NaN)//=>'number'
//undefined
console.log(typeof undefined)//=>'undefined'
//对象
console.log(typeof {})//=>'object'
//数组
console.log(typeof [])//=>'object'
//正则
console.log(typeof /^/)//=>'object'
//函数
console.log(typeof function(){})//=>'function'

注意:

  • 因为typeof检测的结果都是字符串,所以只要两个及以上同时检测,最后结果必然是"string"
 console.log(typeof typeof typeof []);
//=> typeof [] => "object"
//=> typeof "object" => "string"

 

2.instantof

用于检测某一值是什么类型的对象

result = variable instanceof Constructor

instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

3.constructor : 基于构造函数检测数据类型(也是基于类的方式)

4.Object.prototype.toString.call() :检测数据类型最好的办法

posted @ 2019-12-21 20:32  LPEIL  阅读(198)  评论(0编辑  收藏  举报