JS数据类型判断

js数据类型有哪些
基本数据类型(值类型): Number、String、Boolean、Undefined、Null、Symbol(es6新增独一无二的值) 和 BigInt(es10新增);

引用数据类型: Object (Object,Array, function,Date,RegExp。)

JS数据类型判断

五种方法

typeof、instanceof、constructor、Object.prototype.toString.call()、jquery.type()

1.typeof

typeof一般检测基本数据类型中:Number,String,Boolean,undefined 以及引用数据类型中Function ,分别返回对应的数据类型小写字符。
另:用typeof检测构造函数创建的Number,String,Boolean都返回object
typeof不可以检测基本数据类型中:null 和引用数据类型中的:Array,Object,Date,RegExp。他们都会返回小写的object


console.log(
    typeof 100, //"number"
    typeof 'abc', //"string"
    typeof false, //"boolean"
    typeof undefined, //"undefined"
    typeof null, //"object"
    typeof [1,2,3], //"object"
    typeof {a:1,b:2,c:3}, //"object"
    typeof new Date(), //"object"
    typeof /^[a-zA-Z]{5,20}$/, //"object"
    typeof new Error() //"object"
    typeof new String('abc'),// 'string'
    typeof new Boolean(true),//'boolean'
);

2,instanceof

它用来判断这个构造函数的原型是否在给定对象的原型链上。

instanceof是不可以检测基本数据类型中:Number,String,Boolean。(因为js中没有这种全局类型)但是构造函数创建的值可以


          let num =new Number(1);
 
          let str =  new String('abc');
 
          let bool = new Boolean(true);
 
          //这样定义才能检测出.
 
          let num = 1;
 
          let str = 'abc';
 
          let bool = true;
 
          //这样定义是检测不出来的
 

3,constructor

constructor是prototype对象上的属性,指向构造函数。根据实例对象寻找属性的顺序,若实例对象上没有实例属性或方法时,就去原型链上寻找,

因此可以使用某个对象上的constructor属性来判断是否是某个类型

注意:除了undefined和null之外,其他类型都可以通过constructor属性来判断类型。

4 . 使用Object.prototype.toString.call()检测对象类型

定义:首先,取得对象的一个内部属性[[Class]],然后依据这个属性,返回一个类似于”[object Array]“的字符串作为结果(看过ECMA标准的应该都知道,[[]]用来表示语言内部用到的、外部不可直接访问的属性,称为“内部属性”)。利用这个方法,再配合call,我们可以取得任何对象的内部属性[[Class]],然后把类型检测转化为字符串比较,以达到我们的目的。

5,jquery.type()

typeOf能判断出一个变量的类型,但是只能判断出number,string,function,boolean,undefined,null和其他对象类型返回结果都为object.

instanceof能判断出一个对象是否是另一个类的实例。

Object.prototype.toString.call能判断出所有变量的类型,返回值为[Object ***]。

上一篇:08number


下一篇:c# Datatable批量写入数据库