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
相关推荐
wearegogog1235 小时前
基于 MATLAB 的卡尔曼滤波器实现,用于消除噪声并估算信号
前端·算法·matlab
molaifeng5 小时前
Go 语言如何实现高性能网络 I/O:Netpoller 模型揭秘
开发语言·网络·golang
Drawing stars5 小时前
JAVA后端 前端 大模型应用 学习路线
java·前端·学习
崇山峻岭之间5 小时前
Matlab学习记录33
开发语言·学习·matlab
品克缤5 小时前
Element UI MessageBox 增加第三个按钮(DOM Hack 方案)
前端·javascript·vue.js
Evand J5 小时前
【2026课题推荐】DOA定位——MUSIC算法进行多传感器协同目标定位。附MATLAB例程运行结果
开发语言·算法·matlab
小二·5 小时前
Python Web 开发进阶实战:性能压测与调优 —— Locust + Prometheus + Grafana 构建高并发可观测系统
前端·python·prometheus
小沐°5 小时前
vue-设置不同环境的打包和运行
前端·javascript·vue.js
jllllyuz6 小时前
基于MATLAB的二维波场模拟程序(含PML边界条件)
开发语言·matlab
忆锦紫6 小时前
图像增强算法:Gamma映射算法及MATLAB实现
开发语言·算法·matlab