javascript中对变量类型的判断方法

使用typeof检测

  • var num = 123; "number"
  • var str = 'abcdef'; "string"
  • var bool = true; "boolean"
  • var arr = [1, 2, 3, 4]; "object"
  • var json = {name:'wenzi', age:25}; "object"
  • var func = function(){ console.log('this is function'); } "function"
  • var und = undefined; "undefined"
  • var nul = null; "object"
  • var date = new Date(); "object"
  • var reg = /[1]{5,20}$/; "object"
  • var error= new Error(); "object"

检测:typeof num;返回"number"

使用instanceof检测

  • 要求开发者明确地确认对象为某特定类型: num instanceof number 返回false
  • num, str和bool没有检测出他的类型

使用constructor检测

constructor本来是原型对象上的属性,指向构造函数。

  • Tom.constructor==Person,
  • num.constructor==Number,
  • str.constructor==String,
  • bool.constructor==Boolean,
  • arr.constructor==Array,
  • json.constructor==Object,
  • func.constructor==Function,
  • date.constructor==Date,
  • reg.constructor==RegExp,
  • error.constructor==Error 除了undefined和null,其他类型的变量均能使用constructor判断出类型,不过使用constructor也不是保险的,因为constructor属性是可以被修改的,会导致检测出的结果不正确

使用Object.prototype.toString.call检测

如:Object.prototype.toString.call(num) 返回'[object Number]'

  • 可以使用Object.prototype.toString.call(arr)=="object Array"来检测变量arr是不是数组

  1. a-zA-Z ↩︎

转载于:https://juejin.im/post/5bc837e86fb9a05cfa2ff56d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值