检测一个变量是什么类型【typeof、instanceof、Object.prototype.toString】

1、typeof
2、instanceof
3、Object.prototype.toString

例如:

typeof 123//"number"
typeof "123"//"string"
typeof true //"boolean"
function func(){}
typeof func//"function"
typeof undefined //"undefined"
typeof window //"object"
typeof {}//"object"
typeof []//"object"
typeof null // "object"

typeof 是无法检测数组的,数组的本质是一种特殊的对象,检验数组要用intanceof

var o={};
var a=[];
o instanceof Array // false
a instanceof Array // true

Object.prototype.toString能检测出所有的类型,但IE6下undefined、null均为Object类型

变量检测语句结果
var num = 123;Object.prototype.toString.call(num)‘[object Number]’
var str = “abcdef”;Object.prototype.toString.call(str)‘[object String]’
var bool = true;Object.prototype.toString.call(bool)‘[object Boolean]’
var arr = [1,2,3,4];Object.prototype.toString.call(arr)‘[object Array]’
{name:“苏”,age:25};Object.prototype.toString.call(json)‘[object Object]’
var func = function(){console.log(‘this is function’);}Object.prototype.toString.call(func)‘[object Function]’
var und = undefined;Object.prototype.toString.call(und)‘[object Undefined]’
var nul = null;Object.prototype.toString.call(nul)‘[object Null]’
var date = new Date();Object.prototype.toString.call(date)‘[object Date]’
var reg = / ^ [a-zA-Z]{5,20}$ /;Object.prototype.toString.call(reg)‘[object RegExp]’
var err = new Error();Object.prototype.toString.call(err)‘[object Error]’

总结

Number、String、Boolean 类型变量的检测:typeof

Array、JSON、Function、Undefined、Null、Date、RegExp、Error 等 Object 和 Function类型变量的检测:推荐使用Object.prototype.toString.call()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值