js检查数据类型的方法

博客介绍了JavaScript中数据类型校验的方法。包括常用的基本数据类型检测方法typeof,可检测复杂数据类型的instanceof,constructor方法虽看似能解决所有问题,但改原型会改变类型,Object.prototype.toString.call()是终极方法,还有jQuery的$.type()或jQuery.type(),实质是第四种方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.typeof  这是最常用的基本数据类型检测的方法

console.log(typeof "");     // string

console.log(typeof 1);     // number

console.log(typeof true);     // boolean

console.log(typeof undefined);      // undefined

console.log(typeof null);      // object

console.log(typeof {});    // object

console.log(typeof []);     //  object

console.log(typeof function(){});   // function

可以看见,null   数组   跟  {}对象  都是object   是无法区分的

2.instanceof

console.log("1" instanceof String);     // false

console.log(1 instanceof Number);   // false

console.log(true instanceof Boolean);    // false

console.log({} instanceof Object);     //  true

console.log([] instanceof Array);     //  true

console.log(function(){} instanceof Function);     //  true

 

本方法可以检测复杂数据类型

//            console.log(null instanceof Null);

//            console.log(undefined instanceof Undefined);

null 跟  undefined   直接输出会报错  但是使用new  关键字创建就不会

3.constructor

console.log(("1").constructor === String);    //  true

console.log((1).constructor === Number);     //  true

console.log((true).constructor === Boolean);      //  true

console.log(({}).constructor === Object);        //  true

console.log(([]).constructor === Array);        //  true

console.log((function() {}).constructor === Function);      //  true

//    console.log((null).constructor === Null);

//    console.log((undefined).constructor === Undefined);

看起来是可以解决所有问题了,但是改原型(prototype)就会改变类型

4.Object.prototype.toString.call()      终极方法,百试不爽

 console.log(Object.prototype.toString.call("1"));    //  {object    String}

 console.log(Object.prototype.toString.call(1));      //  {object    Number}

console.log(Object.prototype.toString.call(null));         //  {object    Null}

console.log(Object.prototype.toString.call(undefined));         //  {object    Undefined}

 console.log(Object.prototype.toString.call(true));     //  {object    Boolean}

 console.log(Object.prototype.toString.call({}));      //  {object     Object}

 console.log(Object.prototype.toString.call([]));         //  {object    Array}

 console.log(Object.prototype.toString.call(function () {});        //  {object   Fuction}

就算是更改原型一样可以输出 原来的数据类型

5.$.type() 或者  jQuery.type()   常用的jQuery方法,实质就是第四种方法,使用简便,但是需要引入jQuery


$.type("1")      //  {object String}

$.type(1)      //  {object Number}

$.type([])    //  {object    Array}

$.type(undefined)    //  {object Undefined}

$.type(null)     //  {object    Null}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值