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
相关推荐
linx2957 分钟前
第七章 · 标准库容器、算法与 ranges
c语言·开发语言·数据结构·c++·算法
恋猫de小郭19 分钟前
Flutter GSoC 2026 提案进度解读,补上 DevTools、FFI 和原生平台的关键缺口
android·前端·flutter
峥嵘life21 分钟前
2026华为AI码道 CodeArts 使用分享:Windows端 + 服务器CLI 实战总结
android·大数据·开发语言·python
尘世中一位迷途小书童28 分钟前
我为什么在 Windows 上做了一个翻译软件:SnapLingo
前端·人工智能·机器学习
x秀x28 分钟前
sam3新手使用教程
开发语言·python
Java后端的Ai之路29 分钟前
大模型LLM评估完全指南
开发语言·人工智能·python·llm·评估
志尊宝32 分钟前
Vue3 零基础每日笔记(029):插槽 slot 三连——默认、具名、作用域一次讲透
前端·javascript·vue.js·vue·前端开发
aixingpan35 分钟前
aixingpan.cn API开发文档:api_docs_bichart_natalvstertiary2接口指南
前端·php
Brilliantwxx41 分钟前
【STM32】 从HAL库源码深度解析I2C(源码解析+面试题)
开发语言·stm32·单片机·嵌入式硬件·架构
铁皮饭盒1 小时前
网页端, 40mb离线模型, 自动抠图, 不用 Python,不用服务器,不用 API Key, 不用显卡
前端·javascript·后端