JS判断变量是否为空的方法

在 JavaScript 中,判断变量是否为空需要根据不同的数据类型和具体需求来处理。以下是常见场景的解决方案:


1. 基础判断:null 或 undefined

javascript

if (value === null || value === undefined) {// 变量为空
}

或简写为:

javascript

if (value == null) { // 同时匹配 null 和 undefined// 变量为空
}

2. 字符串:空或仅包含空格

javascript

if (typeof value === 'string' && value.trim() === '') {// 空字符串或全空格
}

3. 数组:长度为 0

javascript

if (Array.isArray(value) && value.length === 0) {// 空数组
}

4. 普通对象:无自身可枚举属性

javascript

if (typeof value === 'object' && !Array.isArray(value) && value !== null && Object.keys(value).length === 0) {// 空对象 {}
}

5. 扩展类型:Map、Set

javascript

if ((value instanceof Map || value instanceof Set) && value.size === 0) {// 空的 Map 或 Set
}

综合函数

结合以上场景的通用函数:

javascript

function isEmpty(value) {if (value == null) return true; // null 或 undefinedif (typeof value === 'string') return value.trim() === ''; // 字符串if (Array.isArray(value)) return value.length === 0; // 数组if (value instanceof Map || value instanceof Set) return value.size === 0; // Map/Setif (typeof value === 'object') return Object.keys(value).length === 0; // 普通对象return false; // 其他类型(数字、布尔值等)
}

注意事项

  • 数字 0 和布尔值:通常不视为空,若需特殊处理,添加条件 value === 0

  • 特殊对象:如 DateRegExp,默认视为非空,需按需调整。

  • 字符串空格trim() 会移除首尾空格,若需严格空字符串,改用 value === ""


示例测试

javascript

isEmpty(null);          // true
isEmpty(undefined);    // true
isEmpty('');           // true
isEmpty('   ');        // true
isEmpty([]);           // true
isEmpty({});           // true
isEmpty(new Map());    // true
isEmpty(new Set());    // true
isEmpty(0);            // false
isEmpty(false);        // false
isEmpty({ a: 1 });     // false

根据实际需求调整判断逻辑,确保覆盖您的业务场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/75265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux更换挂载nfs迁移数据流程

当前:原nfs(10.16.2.1:/myData)挂载在/myData,新的nfs(10.16.2.2:/myData)未挂载 目标:把旧nfs的数据迁移到新的nfs上,并把新nfs挂载到/myData 步骤: 1、新nfs挂载到一…

深入解析音频:格式、同步及封装容器

物理音频和数字音频 物理音频 定义:物理音频就是声音在自然界中的物理表现形式,本质上是一种机械波,通过空气或其他介质传播。例如,当我们说话、乐器演奏或物体碰撞时,都会产生振动,这些振动会引起周围介…

AI与.NET技术实操系列(四):使用 Semantic Kernel 和 DeepSeek 构建AI应用

1. 引言 在人工智能技术飞速发展的今天,大型语言模型(Large Language Models, LLMs)已成为智能应用开发的核心驱动力。从智能客服到自动化内容生成,LLMs的应用正在深刻改变我们的工作和生活方式。 对于.NET开发者而言,…

导出cad实体所有信息到txt并打开(生成唯一文件名) ——c#cad二次开发

效果如下: 建议在保存时指定编码为UTF-8: using (StreamWriter sw new StreamWriter(filePath, false, Encoding.UTF8)) { // 写入内容 } 最终 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD…

Redis 源码硬核解析系列专题 - 第一篇:Redis源码入门与整体架构

1. 引言 Redis作为一个高性能的内存键值数据库,其源码以简洁高效著称。通过解析Redis源码,我们可以深入理解其单线程模型、事件驱动机制以及模块化设计的精髓。本篇将从Redis的源码目录结构入手,剖析其整体架构,并聚焦启动流程和事件循环的核心实现。 2. Redis源码目录结构…

异步加载+内存分析

异步加载 Resources和AB包的同步加载与异步加载对比代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class AsyncLoad : MonoBehaviour {// Start is called before the first frame updatev…

将视频m4s文件转换为mp4格式

将视频m4s文件转换为mp4格式 一般情况:偏大的文件为视频,偏小的文件为音频。 环境要求:下载并安装ffmpeg,并配置好环境变量,如下图: 转换代码: import subprocessdef merge_m4s_to_mp4(vide…

EXCEL报错:无法共享此工作薄,因表包含excel表或xml映射的解决方法

在分享工作薄是,如果出现了“无法共享此工作薄,因表包含excel表或xml映射”的报错,那么有两个原因: 1.包含Excel表格,这个也是相对比较常见的原因。 首先选中表格。如果你不知道表的位置在哪,那么在Excel左…

w2ui 水平滚动移动 虚拟列 数据丢失

https://w2ui.com/web/docs/1.5/w2grid.disableCVS https://github.com/vitmalina/w2ui/issues/1398 解决方案来源 问题现象: 窗口缩小 导致多列 出现水平滚动,滚动时触发本地样式重绘,导致record undefined,从而引发多列报错 解决方案: 使用 disableCVS : true 一次加载到d…

在ensp进行OSPF+RIP+静态网络架构配置

一、实验目的 1.Ospf与RIP的双向引入路由消息 2.Ospf引入静态路由信息 二、实验要求 需求: 路由器可以互相ping通 实验设备: 路由器router7台 使用ensp搭建实验坏境,结构如图所示 三、实验内容 1.配置R1、R2、R3路由器使用Ospf动态路由…

基于mediapipe深度学习和限定半径最近邻分类树算法的人体摔倒检测系统python源码

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 Mediapipe人体姿态检测原理 4.2 限定半径最近邻分类树算法原理 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 人工智能算法python程序运行环…

deep-sync开源程序插件导出您的 DeepSeek 与 public 聊天

一、软件介绍 文末提供下载 deep-sync开源程序插件导出您的 DeepSeek 与 public 聊天,这是一个浏览器扩展,它允许用户公开、私下分享他们的聊天对话,并使用密码或过期链接来增强 Deepseek Web UI。该扩展程序在 Deepseek 界面中添加了一个 “…

苹果签名是否一定安全呢?

苹果签名是一种数字签名技术,用于验证应用程序的来源和完整性。当开发者将应用程序提交到苹果应用商店时,苹果会对应用进行签名,这个签名包含了开发者的身份信息以及应用的相关数据。用户安装应用时,设备会验证签名的有效性&#…

Outlook客户端无法连接到服务器,添加账户显示“无网络连接,请检查你的网络设置,然后重试。[2603]”

1、先切换一下到手机热点或者其他网络,判断是不是现在所连接的网络的问题。如果有VPN代理软件,网银软件,加密软件在后台运行,麻烦退出一下。 2、打开电脑上的 控制面板——网络和Internet——Internet选项——高级——先点击还原…

Laravel 中使用 JWT 作用户登录,身份认证

什么是JWT: JWT 全名 JSON Web Token,是一种开放标准 (RFC 7519)。 用于在网络应用环境间安全地传输信息作为 JSON 对象。 它是一种轻量级的认证和授权机制,特别适合分布式系统的身份验证。 核心特点 紧凑格式:体积小&#x…

51. “闲转易”交易平台小程序(基于springbootvue)

目录 1.系统的受众说明 2 关键技术介绍 2.1 SSM框架 2.2 Java技术及架构介绍 2.3 MYSQL数据库 2.4微信小程序框架 2.5 B/S架构 3 需求分析与可行性分析 3.1功能需求分析 3.2 性能需求分析 3.3系统设计规则与运行环境 3.4系统流程分析 3.5 可行性分析 4 系统设计 …

【STM32】GPIO输入(按键)

目录 一、如何分辨GPIO输入使用什么电频二、输入抖动问题如何消抖三、示例代码 一、如何分辨GPIO输入使用什么电频 先看原理图 即可知道他的初始输入状态需要高电平 判断可知使用上拉输入 二、输入抖动问题如何消抖 电路图中, 按键输入有额外的电容电阻, 是为了消抖 消抖方…

【Android Studio】配置教程以及解决过程中的问题(详细版本)

目录 前言 一、下载安装 二、配置 三、简单使用 新建项目 创建默认项目 四、解决过程中的问题 前言 如果你目前不是第一次安装,那需要完全卸载它。 因为一般电脑卸载 Android Studio 时容易落下一堆配置文件没删,卸载不干净导致无用文件占用空间…

EtherNet/IP转ProfiNet协议转换网关驱动西门子PLC与流量计的毫秒级压力同步控制

一、案例背景 汽车涂装线的静电喷涂工艺对压缩空气流量稳定性要求极高。原系统中Alicat流量计与西门子PLC因协议差异无法联动,导致涂料浪费率高达8%。通过JM-EIPM-PN网关实现供气系统与PLC的深度集成。从而实现了EtherNet/IP转ProfiNet的通讯。 二、设备连接与配置…

如何从0-1的建设云上稳定性?

一、系统架构 整个系统包含了私有云和公有云两个节点。前端和服务端存在私有云和公有云两套系统交互,公有云上的系统为三方黑盒系统。 带着上面的五点风险和挑战,我们从前后端的视角整体制定优化策略和方案。 二、前端策略 作为钉钉的合作产品&#xff…