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
相关推荐
To_OC26 分钟前
LC 15 三数之和:双指针不难,难的是把去重做对
javascript·算法·leetcode
触底反弹1 小时前
🔥 前端也能玩转 AI 流式输出!从二进制流到打字机效果,一篇讲透
javascript·人工智能·node.js
胡萝卜术1 小时前
深度重构:Agent Skills——从 Prompt 工程到能力工程
javascript·架构·github
benchmark_cc2 小时前
如何用 Python + QuantDash 快速构建高胜率“配对交易(Pairs Trading)”策略?
开发语言·人工智能·python·pandas·量化交易·quantdash
海上彼尚3 小时前
Nodejs也能写Agent - 16.LangGraph篇 - 条件分支与循环
前端·后端·langchain·node.js
程序员无隅3 小时前
Coding Agent 为什么压缩上下文后还能继续工作?上下文模块设计拆解
java·开发语言·数据库
Python+993 小时前
Java 枚举类(Enum)详解:从基础到高级应用
java·开发语言·python
二炮手亮子3 小时前
浅记java线程池
java·开发语言
To_OC3 小时前
从 “卡死半天” 到 “打字机效果”:大模型流式输出前端实现全记录
前端·javascript·llm
rockey6273 小时前
基于AScript的JavaScript脚本语言发布啦
javascript·c#·.net·js·script