news 2026/5/23 13:20:49

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/5/23 13:20:48

PaddlePaddle镜像中的ERNIE系列模型究竟有多强?

PaddlePaddle镜像中的ERNIE系列模型究竟有多强? 在中文自然语言处理的战场上,一个现实问题始终困扰着开发者:为什么很多在英文任务上表现优异的大模型,一碰到中文就“水土不服”? 答案并不复杂——中文没有空格分词、…

作者头像 李华
网站建设 2026/5/21 17:56:43

Java毕设选题推荐:基于springboot的旅拍在线婚纱摄影网站的设计与实现旅拍路线、筛选摄影风格、预约拍摄服务【附源码、mysql、文档、调试+代码讲解+全bao等】

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

作者头像 李华
网站建设 2026/5/23 4:38:55

4645645

645645

作者头像 李华
网站建设 2026/5/9 23:46:09

Windows找不到xactengine2_2.dll文件 丢失问题 下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华