js判断变量是数组还是对象

本文介绍了三种判断变量是数组还是对象的方法:

  1. typeof无法区分数组和对象,都返回"object";
  2. instanceof可以区分,但需要先判断数组再判断对象;
  3. Array.isArray()专门用于判断数组。
    第三种方法最为简洁可靠,推荐使用。
    文章通过代码示例展示了每种方法的使用场景和局限性。

一、使用typeof

javascript 复制代码
let str = '';//文本
console.log(typeof str);//string
let num = 1;//数字
console.log(typeof num);//number
let bol = true;//布尔值
console.log(typeof bol);//boolean
let arr_obj=[];//数组
console.log(typeof arr_obj);//object
let obj_obj={};//对象
console.log(typeof obj_obj);//object

其中数组和对象,使用typeof,输出结果是object,不能判断是数组还是对象。

二、使用instanceof

javascript 复制代码
let arr = [];
console.log(arr instanceof Array);//true
console.log(arr instanceof Object);//true

let obj = {};
console.log(obj instanceof Array);//false
console.log(obj instanceof Object);//true

使用instanceof因先判断是否是数组,然后再判断是否对象

javascript 复制代码
function isArrOrObj(o) {
    if (o instanceof Array) {
        return '数组';
    } else if (o instanceof Object) {
        return '对象';
    } else {
        return '不能确定是数组或对象'
    }
}
let arr = [];
let obj = {};
console.log(isArrOrObj(arr));//数组
console.log(isArrOrObj(obj));//对象

三、使用Array.isArray()

javascript 复制代码
let arr = [];
let obj = {};
console.log(Array.isArray(arr));//true
console.log(Array.isArray(obj));//false
相关推荐
艾德金的溪1 天前
redis-7.4.6部署安装
前端·数据库·redis·缓存
小光学长1 天前
基于Vue的2025年哈尔滨亚冬会志愿者管理系统5zqg6m36(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
@PHARAOH1 天前
WHAT - 受控组件和非受控组件
前端·javascript·react.js
生莫甲鲁浪戴1 天前
Android Studio新手开发第二十六天
android·前端·android studio
JH30731 天前
B/S架构、HTTP协议与Web服务器详解
前端·http·架构
weixin_445476681 天前
Java并发编程——synchronized的实现原理与应用
java·开发语言·并发·synchronized
yi碗汤园1 天前
【超详细】C#自定义工具类-StringHelper
开发语言·前端·unity·c#·游戏引擎
sali-tec1 天前
C# 基于halcon的视觉工作流-章49-网面破损
开发语言·图像处理·算法·计算机视觉·c#
YuanlongWang1 天前
c# ABP vNext 框架详解及其模块化开发思想介绍
开发语言·c#
张人玉1 天前
WPF布局控件(界面骨架核心)
开发语言·c#·wpf·布局控件