新闻中心
J*aScript中如何判断数据类型_typeof的局限性
typeof对基本类型可靠但对null、数组、Date等均返回"object",核心局限性;最可靠方案是Object.prototype.toString.call(),可精确识别所有内置类型。

J*aScript 中判断数据类型,typeof 是最常用的操作符,但它对某些类型返回的结果并不准确——尤其是 对象、数组、null 和部分内置对象(如 Date、RegExp),它都统一返回 "object",这是它的核心局限性。
typeof 对基本类型基本可靠
typeof 能正确区分大部分原始类型:
-
typeof "hello"→"string" -
typeof 42→"number" -
typeof true→"boolean" -
typeof undefined→"undefined" -
typeof function() {}→"function" -
typeof Symbol()→"symbol" -
typeof BigInt(1n)→"bigint"
typeof 的主要问题:null 和对象类类型全返回 "object"
这是历史遗留 bug,但已成标准,无法更改:
-
typeof null→"object"(错误!null 是原始值) -
typeof []→"object"(无法区分数组) -
typeof {}→"obje(普通对象也这样)
ct" -
typeof new Date()→"object" -
typeof /regex/→"object" -
typeof new Map()→"object"
更可靠的替代方案:Object.prototype.toString.call()
这是目前最通用、规范的类型检测方式,能精确识别内置对象类型:
Picit AI
免费AI图片编辑器、滤镜与设计工具
195
查看详情
-
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 Date())→"[object Date]" -
Object.prototype.toString.call(/abc/)→"[object RegExp]" -
Object.prototype.toString.call(new Set())→"[object Set]"
可封装为工具函数:
function getType(value) {
return Object.prototype.toString.call(value).slice(8, -1);
}
// getType([]) → "Array"
// getType(null) → "Null"
// getType(123) → "Number"
其他补充方法(按需选用)
针对特定场景,可结合使用:
- 判断数组:
Array.isArray(arr)(推荐,语义清晰、性能好) - 判断对象(非 null 的纯对象):
value !== null && typeof value === 'object' && !Array.isArray(value) - 判断 Promise:
value && typeof value.then === 'function'(注意不严谨,仅作简单判断) - 判断类实例:
value instanceof MyClass(仅适用于构造函数或 class)
基本上就这些。typeof 简单快,适合快速检查基本类型;真要精准识别,优先用 Object.prototype.toString.call(),再辅以 Array.isArray 等专用方法。
以上就是J*aScript中如何判断数据类型_typeof的局限性的详细内容,更多请关注其它相关文章!
# 滤镜
# 上饶整合营销及推广电话
# 关键词热度最高视频排名
# 游戏推广网站靠谱公司
# 网站建站及推广策略
# 中小企业的营销与推广
# 酒店网站建设存在问题
# seo 点评
# 店铺关键词排名掉了
# 如何利用网站建设
# 闵行网站建设系统规划
# 尤其是
# javascript
# 高阶
# 如何用
# 如何使用
# 中文网
# 如何判断
# 有哪些
# 如何实现
# 这是
# 工具
# java
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
蛙漫2台版漫画地址 Manwa2正版网页版链接
Golang如何安装Swagger工具_GoSwagger文档生成环境
如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率
微信网页版官方入口教程 微信网页版网页版快速登录步骤
iwriter统一登录平台 iwrite账号密码登录页面
Win10双系统截图高效法 截屏快捷键速记【技巧】
铁路12306官网网页端快速入口 铁路12306官方首页登录教程
J*aScript中针对特定容器内图片动画的实现教程
支付宝如何管理隐私设置_支付宝隐私保护的配置技巧
漫蛙漫画官方首页 漫蛙2漫画在线阅读入口
2025俄罗斯Yandex最新入口 官方网站地址及浏览器下载指南
使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性
J*aScriptWebpack优化_J*aScript构建工具实战
Golang如何优化CPU绑定任务分配策略_Golang CPU任务分配优化实践
Golang如何使用buffered channel提高性能_Golang buffered channel优化技巧
Go语言中Map存储的结构体如何调用指针方法:深入解析与实践
DLsite中文平台入口 DLsite官网内容在线查看
百度网盘网页版入口 百度网盘网页版官方登录网址
怎样更改Windows系统的默认安装路径_避免C盘爆满的终极设置【技巧】
React项目中导航栏Logo自适应布局:避免裁剪与布局溢出
Flexbox布局实践:实现粘性导航栏与底部固定页脚
邮政快递单号查询入口 邮政快递物流信息在线查询入口
Python实时数据流中的动态最值查找策略
qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决
响应式容器内容自动缩放与宽高比维持教程
Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组
韩小圈电脑版在线入口_网页版免费登录地址
魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】
J*a递归快速排序中静态变量的状态管理与陷阱
MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略
淘宝网网页版登录入口 淘宝官方网页版快捷登录
J*aScript生成器_j*ascript异步迭代
Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值
C#使用XPath查询节点时出错? 常见语法错误与调试技巧
Typer应用中动态命令行参数的解析与处理
PHP高效扁平化嵌套数组:使用array_merge与数组解包操作符
QQ邮箱登录官网首页 腾讯QQ邮箱网页入口
如何在更新Composer依赖后自动运行测试_使用post-update-cmd钩子触发PHPUnit
J*aScript中如何高效提取对象指定属性
Log4j Console Appender性能瓶颈与高并发优化策略
Safari浏览器输入栏卡顿如何解决 Safari搜索建议与缓存清理
Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】
b站怎么删除评论_b站评论管理与删除操作
优化LangChain文档加载与ChromaDB集成:解决多文档处理与分块问题
马斯克:Optimus 人形机器人复数形式为 Optimi
2306选座时如何选靠窗位置_12306选座靠窗座位查看方法解析
QQ邮箱官方登录入口_QQ邮箱网页版快捷使用平台
单12V-2×6实现为RTX 5090供电750W!甚至都没敢跑分
Django通过AJAX异步上传图片并保存至模型的完整指南
C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果


2025-12-12
浏览次数:次
返回列表
ct"