JavaScript中的类型判断方法(全)

举报
伯约同学 发表于 2022/02/12 10:53:54 2022/02/12
【摘要】 JavaScript中的类型判断方法(全)

JavaScript中的类型判断方法(全)

js中的数据类型

基本数据类型:Undefined、Null、Boolean、Number、String,Symbol
引用数据类型 :Object

一般而言,我们还需要额外判断一下是Array类型还是Object

今天就专门整理了下,下面用表格做一个对比

| 数据                  | typeof                  | instanceof                           | constructor                         | Object.prototype.toString.call                           |
| --------------------- | ----------------------- | ------------------------------------ | ----------------------------------- | -------------------------------------------------------- |
| const und = undefined | 'undefined'             | undefined instanceof Object // false | 无该属性                            | Object.prototype.toString.call(und) //[object Undefined] |
| const nul = null      | 'object'                | null instanceof Object // false      | 无该属性                            | Object.prototype.toString.call(nul) //[object Null]      |
| const bool = false    | 'boolean'               | false instanceof Boolean // false    | bol.constructor === Boolean // true | Object.prototype.toString.call(bool)  //[object Boolean] |
| const num = 1         | 'number'                | 1 instanceof Number // false         | num.constructor === Number // true  | Object.prototype.toString.call(num)  //[object Number]   |
| const str = 'test'    | 'string'                | 'test' instanceof String // false    | str.constructor === String // true  | Object.prototype.toString.call(str)  //[object String]   |
| const sym = Symbol()  | 'symbol'                | sym instanceof Symbol // false       | sym.constructor === Symbol // true  | Object.prototype.toString.call(sym)   //[object Symbol]  |
| const obj = {param:1} | 'object'                | obj instanceof Object // true        | obj.constructor === Object // true  | Object.prototype.toString.call(obj) //[object Object]    |
| const arr = [1,2,3]   | 'object'                | [1] instanceof Object  //true        | arr.constructor === Array // true   | Object.prototype.toString.call(arr) //[object Array]     |
| 总结                  | 无法区分数组 对象和null | 无法识别基本数据类型                 | 依然不能判断所有类型                | 可以适当封装用于数据类型判断                             |

当然,不同场景使用不同的判断方法。简单类型的判断,使用typeof即可(null的问题属于历史遗留),针对array和object再作进一步区分即可(可以使用Array.isArray())

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。