typeof对基本类型可靠但对null、数组、Date等均返回"object",核心局限性;最可靠方案是Object.prototype.toString.call(),可精确识别所有内置类型。

J*aScript 中判断数据类型,typeof 是最常用的操作符,但它对某些类型返回的结果并不准确——尤其是 对象、数组、null 和部分内置对象(如 Date、RegExp),它都统一返回 "object",这是它的核心局限性。
typeof 能正确区分大部分原始类型:
typeof "hello" → "string"
typeof 42 → "number"
typeof true → "boolean"
typeof undefined → "undefined"
typeof function() {} → "function"
typeof Symbol() → "symbol"
typeof BigInt(1n) → "bigint"
这是历史遗留 bug,但已成标准,无法更改:
typeof null → "object"(错误!null 是原始值)typeof [] → "object"(无法区分数组)typeof {} → "object"(普通对象也这样)typeof new Date() → "object"
typeof /regex/ → "object"
typeof new Map() → "object"
这是目前最通用、规范的类型检测方式,能精确识别内置对象类型:
Text-To-Pokemon口袋妖怪
输入文本生成自己的Pokemon,还有各种选项来定制自己的口袋妖怪
1487
查看详情
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)(推荐,语义清晰、性能好)value !== null && typeof value === 'object' && !Array.isArray(value)
value && typeof value.then === 'function'(注意不严谨,仅
作简单判断)value instanceof MyClass(仅适用于构造函数或 class)基本上就这些。typeof 简单快,适合快速检查基本类型;真要精准识别,优先用 Object.prototype.toString.call(),再辅以 Array.isArray 等专用方法。
以上就是J*aScript中如何判断数据类型_typeof的局限性的详细内容,更多请关注其它相关文章!
# 滑块
# 网站优化方法图片素材库
# 泛目录链接seo博客
# 镇江智能化网站优化
# 长沙网站建设服务哪家好
# 上塘网站建设制作
# 网站推广的核心是内链嘛
# 专业网站优化流程
# 锡林郭勒盟网站建设推广
# 营销推广类的公司
# 促销营销推广
# 有哪些
# javascript
# 运算符
# 如何使用
# 自定义
# 如何判断
# 迭代
# 自己的
# 如何实现
# 这是
# 工具
# java
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
Magento 2 产品保存事件中安全更新属性的最佳实践
《图怪兽》退出登录方法
NumPy 高性能技巧:基于多列条件查找最近邻行索引的向量化实现
Flash AS3.0简易相册制作
铁路12306入口 铁路12306官网版入口登录网址
MacBook Pro词典使用指南
CSS如何控制元素外边距_margin实现布局间隔
小米civi如何设置锁屏时间
《KARDS》冬季扩展包“国土阵线”上线!全新“协力”机制改变战场格局
在Django单元测试中优雅处理信号:基于环境的条件执行策略
键盘保修需要什么_键盘售后维修流程
太平年在哪个平台播出
百度竞价WAP显示PC链接问题
快手缓存清理方法
Linux如何自动分析系统异常日志_Linux日志智能检测
植物大战僵尸95版游戏版下载_植物大战僵尸95版游戏版安装指南
批改网官网首页登录 批改网学生用户登录入口
C++ bind函数使用教程_C++参数绑定与函数适配器的应用
《下一站江湖2》武器获取方法
天天漫画2025最新入口 天天漫画永久有效登录入口
在Django中动态检查模型关联:一种灵活的解决方案
iphone16系列配置参数介绍
PPT页面尺寸怎么修改 PPT自定义幻灯片大小与方向设置【教程】
win11如何诊断DirectX问题 Win11运行dxdiag工具排查显卡故障【排错】
J*aScript大数运算_BigInt使用指南
基于键值条件高效映射 Pandas DataFrame 多列数据
使用VS Code作为你的个人知识管理系统
J*aScript 数值去小数位处理:多种方法与实践
5G和6G的连接密度有什么区别 6G每平方公里能连接多少设备
中大网校app做题记录清除方法
如何通过settings.json个性化您的VS Code体验
PHP utf8_encode 字符编码转换陷阱与解决方案
谷歌浏览器如何查找和删除恶意软件 谷歌浏览器内置安全清理工具使用教程
《下一站江湖2》大雪山加入方法
win11讲述人怎么关闭 Win11屏幕朗读辅助功能禁用方法【技巧】
跨语言测试实践:使用Python Selenium测试现有J*a Web项目
Go语言反射机制:如何访问被嵌入结构体遮蔽的方法
J*aScript实现下拉菜单驱动的动态表格数据展示
全球各国上班时间表外贸邮件时间
抖音评论无法发送如何修复 抖音评论功能操作指南
sublime怎么在文件中显示代码结构大纲_sublime符号列表功能
易车网官网直达入口 易车网在线登录入口
嘴唇干裂起皮怎么办 唇部护理与预防干裂的方法【详解】
《三国:谋定天下》平民全阶段通用阵容
J*aScript与HTML元素交互:图片点击事件与链接处理教程
b站怎么用微信登录_b站微信登录方法
C++ optional用法详解_C++17处理可能为空的返回值
芒果TV官网登录入口 芒果TV官方网站登录入口
Win10如何查看已安装的更新补丁 Win10卸载指定更新教程【教程】
Go反射进阶:访问内嵌结构体中的被遮蔽方法
2025-12-12
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。