Please enable Javascript to view the contents

JavaScript数据类型及类型检测

 ·  ☕ 2 分钟

你觉得现在JavaScript中有多少数据类型。

数据类型

在最新的 ECMAScript 标准定义了 8 种数据类型:

  • 7 种原始类型:
    • Boolean
    • Null
    • Undefined
    • Number
    • BigInt
    • String
    • Symbol
  • 和 Object

然而JavaScript对象(object)类型中内置了多种类型,简单统计如下:

  • Object
    • Function
    • Date
    • Array
    • Math
    • Error
    • RegExp
    • Set
    • WeakSet
    • Map
    • WeakMap
    • GeneratorFunction

所以,JavaScript中至少有18种内置的数据类型或对象。


类型检测

在js中,类型检测的方法有好几个:

  • typeof
  • Object.prototype.toString.call()
  • Array.isArray()
  • instanceof
  • … …

这里我们主要讨论typeof 与 toString() 方法。

typeof 是类型检测运算符,其检测结果正确但不够精确。如 typeof(null) 、 typeof([1,2,3]) 都返回 “object” 而不是null和array。

而js中每个值或对象都有一个 toString() 方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。默认情况下,toString() 方法被每个 Object 对象继承。如果此方法在自定义对象中未被覆盖,toString() 返回 “[object type]"。

所以经常用 Object.prototype.toString.call()  的方式来检测数据类型。也可以简化成({}).toString.call(),对比如下:

所以,类型检测请使用:Object.prototype.toString.call().slice(8,-1).toLowerCase()

参考资料

分享

码中人
作者
码中人
Web Developer