美文网首页
js检查各种数据类型的几种方法以及特殊情况

js检查各种数据类型的几种方法以及特殊情况

作者: Aoyi_G | 来源:发表于2017-08-25 18:59 被阅读0次

js的变量是松散类型的,所以需要检测变量数据类型的方法。

1. typeof运算符

使用typeof来检测是一种基本的方法,typeof操作符可能返回的值有:

  • 'undefined'——未定义
  • 'boolean'——布尔值
  • 'string'——字符串
  • 'number'——数值
  • 'object'——对象或null
  • 'function'——函数

如下测试:

测试 输出
typeof 233 number
typeof null object
typeof {} object
typeof [] ** object**
typeof (function(){}) function
typeof undefined undefined
typeof '233' string
typeof true boolean

2. instanceof

typeof操作符存在的缺陷是无法具体的判断object的类型。对此,提出instanceof。
instanceof主要用于检测一个实例是否属于一个类。
如下检测:

测试 输出
[] instanceof Array true
/^$/ instanceof RegExp true
[] instanceof Object true

针对这种方法,我还可以使用类似的原理constructor来检测,如下:

测试 输出
[].constructor === Array true
[].constructor === Object false
{}.constructor === Object true

注意:我们的constructor可以避免instanceof检测的时候,用Object也是true的问题

3. Object.prototype.toString.call(value)

上面的方法我们很常见,下面记录以下最近了解到的一种新方法。
Object.prototype.toString.call(value)是对象的一个原生原型扩展函数,用来更精确的区分数据类型。如下:

var   gettype=Object.prototype.toString
gettype.call('233')输出      [object String]
gettype.call(233) 输出      [object Number]
gettype.call(true)  输出      [object Boolean]
gettype.call(undefined)  输出      [object Undefined]
gettype.call(null)  输出   [object Null]
gettype.call({})   输出   [object Object]
gettype.call([])    输出   [object Array]
gettype.call(function(){})     输出   [object Function]

相关文章

网友评论

      本文标题:js检查各种数据类型的几种方法以及特殊情况

      本文链接:https://www.haomeiwen.com/subject/giqpdxtx.html