【JavaScript基础】判断数据类型,判断是数组还是对象?

一、判断数据的类型,了解一些常用的方法(结尾为总结判断数组和对象的推荐方法)

1.typeof运算符

typeof属于运算符不是函数,所以可以不用加括号 typeof()

只能区分基本类型,即 “Number”,”String”,”undefined”,”Boolean”,”Object”,“Function”,“symbol” (ES6 新增)七种

NaN返回"number",null返回"object"。对于数组、null、对象来说,使用 typeof 都会统一返回 “object”

 

控制台打印实验

很明显Array和Object 会返回 "object",所以你无法使用typeof判断数组还是对象。

 

typeof 的返回值以下截图自MDN官网

 

 2.instanceof运算符

用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上, 

严格来说是 Java 中的一个双目运算符,用来测试一个对象是否为一个类的实例

当你希望判断是否为对象时,instanceof 是无法判断的。如果你希望判断是否为数组时,instanceof可以判断

 

 

 

3.Object.prototype.constructor

返回创建实例对象的 Object 构造函数的引用,可以进行判断对象或者数组

 

4.Object.prototype.toString.call()

万能,可以判断任何类型。Object.prototype.toString.call() 常用于判断浏览器内置对象。

 

 

5.Array.isArray(),有兼容问题,当然现在已经不是基本不存在了(IE 22年6月15日停止更新)

从字面定义来看,只有传入参数为数组时会返回true,其余所有情况返回为false

 

二、判断数据类型的推荐方法 

  • 判断数据类型的方法:Object.prototype.toString.call()

万能的方法必须记住,可以判断任何类型。

 

三、判断数组 或者  对象的 推荐方法

  • 判断数组的方法:Array.isArray()

其余方法均有限制(instanceof受限于同一框架(同一执行环境),constructor存在手动修改的可能性),考虑兼容性用万能方法Object.prototype.toString.call()代替

  • 判断对象的方法:Object.prototype.toString.call()

万能的方法必须记住,可以判断任何类型(数组也可以)。

posted @   wanglei1900  阅读(389)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示