javascript数据类型有哪些_如何准确判断一个值的类型?

admin 百科 13
JavaScript有8种数据类型,typeof因历史bug和无法区分对象子类型而不够用;Object.prototype.toString.call()是最可靠判断方法,可精确识别所有内置类型。

javascript数据类型有哪些_如何准确判断一个值的类型?-第1张图片-佛山资讯网

JavaScript 有 8 种数据类型:7 种原始类型(stringnumberbooleannullundefinedsymbolbigint)和 1 种引用类型(object,包括 ArrayFunctionDateRegExpMapSet 等所有非原始值)。

为什么 typeof 不够用?

typeof 是最常用的方法,但它在几个关键地方会“撒谎”:

  • typeof null === 'object' —— 这是历史 bug,至今未修复
  • typeof [] === 'object'typeof {} === 'object'typeof new Date() === 'object' —— 全部返回 'object',无法区分具体类型
  • typeof function(){} === 'function' 虽然正确,但 function 本质仍是 object,只是被特殊对待

准确判断类型的推荐方法:Object.prototype.toString.call()

这是最可靠、兼容性最好、且能区分内置对象类型的方式。它利用每个内置构造函数在内部定义的 [[Class]] 标签(ES5 规范),返回形如 "[object Array]" 的字符串:

  • Object.prototype.toString.call([])"[object Array]"
  • Object.prototype.toString.call(null)"[object Null]"
  • Object.prototype.toString.call(undefined)"[object Undefined]"
  • Object.prototype.toString.call(new Set())"[object Set]"
  • Object.prototype.toString.call(42n)"[object BigInt]"

你可以封装一个通用判断函数:

立即学习“Java免费学习笔记(深入)”;

标签: javascript java js node.js node 为什么

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~