news 2026/7/10 17:35:36

js如何判空?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
js如何判空?

在 JavaScript 中,判空(检查变量是否为“空”值)需要针对不同数据类型进行区分。根据你的需求,“空”包括:空数组、空对象、空字符串、0、undefined、null、空 Map、空 Set。

1. 严格判空(仅 null 或 undefined)

if(value==null){// 等价于 value === null || value === undefinedconsole.log("值为 null 或 undefined");}

2. 宽松判空(包括空字符串、空数组、空对象等)

方法 1:自定义 isEmpty 函数

functionisEmpty(value){return(value==null||// null 或 undefined(typeofvalue==="string"&&value.trim()==="")||// 空字符串或全空格(Array.isArray(value)&&value.length===0)||// 空数组(typeofvalue==="object"&&Object.keys(value).length===0)||// 空对象(valueinstanceofMap&&value.size===0)||// 空 Map(valueinstanceofSet&&value.size===0)// 空 Set// 注意:0 不算空,除非额外处理);}// 测试console.log(isEmpty(null));// trueconsole.log(isEmpty(undefined));// trueconsole.log(isEmpty(""));// trueconsole.log(isEmpty(" "));// trueconsole.log(isEmpty([]));// trueconsole.log(isEmpty({}));// trueconsole.log(isEmpty(newMap()));// trueconsole.log(isEmpty(newSet()));// trueconsole.log(isEmpty(0));// false(默认不算空,除非修改逻辑)

方法 2:如果 0 也算空

functionisEmpty(value){return(value==null||(typeofvalue==="string"&&value.trim()==="")||(Array.isArray(value)&&value.length===0)||(typeofvalue==="object"&&Object.keys(value).length===0)||(valueinstanceofMap&&value.size===0)||(valueinstanceofSet&&value.size===0)||value===0// 0 也算空);}console.log(isEmpty(0));// true

3. 特殊情况处理

(1)0 是否算空?

  • 默认情况下,0 是一个有效的数字,不算空。
  • 如果业务上需要 0 也算空,可以在 isEmpty 里加上 value === 0。

(2)false 是否算空?

  • false 是布尔值,通常不算空,除非特别处理。

(3)NaN 是否算空?

  • NaN 是无效数字,可以额外判断:
Number.isNaN(value)

4. 完整判空方案(推荐)

functionisEmpty(value,treatZeroAsEmpty=false){return(value==null||(typeofvalue==="string"&&value.trim()==="")||(Array.isArray(value)&&value.length===0)||(typeofvalue==="object"&&Object.keys(value).length===0)||(valueinstanceofMap&&value.size===0)||(valueinstanceofSet&&value.size===0)||(treatZeroAsEmpty&&value===0)// 可选:0 是否算空);}// 使用console.log(isEmpty(0));// falseconsole.log(isEmpty(0,true));// true(0 算空)

5. 总结

数据类型判空方式
null / undefinedvalue == null
空字符串 “”value === “” 或 value.trim() === “”
空数组 []Array.isArray(value) && value.length === 0
空对象 {}Object.keys(value).length === 0
空 Mapvalue instanceof Map && value.size === 0
空 Setvalue instanceof Set && value.size === 0
0默认不算空,除非额外处理
false通常不算空
NaNNumber.isNaN(value)

6. 最终推荐

functionisEmpty(value,options={treatZeroAsEmpty:false}){return(value==null||(typeofvalue==="string"&&value.trim()==="")||(Array.isArray(value)&&value.length===0)||(typeofvalue==="object"&&Object.keys(value).length===0)||(valueinstanceofMap&&value.size===0)||(valueinstanceofSet&&value.size===0)||(options.treatZeroAsEmpty&&value===0));}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 5:35:46

Fritzing中Arduino电路设计:新手教程(零基础入门)

从零开始用 Fritzing 设计 Arduino 电路:新手也能看懂的实战指南 你有没有过这样的经历?脑子里有个酷炫的电子点子——比如做个自动浇花系统,或者一个会随音乐闪烁的灯带。可一想到要画电路图、接线、搞不清哪个引脚连哪里,顿时就…

作者头像 李华
网站建设 2026/7/1 18:58:34

当大厂以生态碾压:Rokid Glasses的“用户共创”护城河还牢靠吗?

出品 | 何玺排版 | 叶媛2025年,坚持“用户共创”的Rokid Glasses强势领跑智能眼镜赛道。年初,凭借创始人祝铭明“发言稿就在我的眼镜里”的脱稿演讲引爆关注,随后在CES、WAIC等国际展会频频出圈,产品力获全球认可。Rokid Glasses首…

作者头像 李华
网站建设 2026/7/2 4:21:09

Java计算机毕设之基于springboot的旅拍在线婚纱摄影网站的设计与实现订单对接旅拍路线、筛选摄影风格、预约拍摄服务(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/8 6:20:06

Coolutils Total Mail Converter(邮件转换工具)

链接:https://pan.quark.cn/s/4cf3ef8a83ddCoolutils Total Mail Converter是一款功能强大的邮件转换工具,这款软件可以帮你把Outlook格式的邮件转换为常见的HTM, TXT, PDF, DOC, RTF等格式。如果你手上的O…

作者头像 李华
网站建设 2026/7/7 9:32:19

计算机Java毕设实战-基于springboot的拍卖网站的设计与实现拍卖商品管理、历史竞拍管理【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/6 13:50:52

宇宙密码:数字 0.01 如何颠覆人类宇宙观

宇宙密码:数字 0.01 如何颠覆人类宇宙观想象一下,如果告诉你宇宙的本质可以用一个简单的数字来概括,那会是什么?引言:一个数字发明宇宙的密码 一个看似平凡的数字"0.01"将彻底颠覆人类对宇宙的认知&#xff…

作者头像 李华