js 判断空值的方法

作为一个前端开发人员,会经常碰到js判断空值的场景。以前判断空值会写一大堆&&与运算来剔除各种异常情况。后面发现一些人用!非运算,然后又开始用它,再后面又发现一些人用||或运算与''空值比较,又开始用它。用了这么久,也没发现什么问题。结果,这次在解析后端返回的json时,出现了一些问题,故此决定花时间自己做个相关的验证测试对比,方便做到心里有数。

js 判断空值的方法

我目前用得比较多的就是:

  1. !exp非运算;

  2. (exp||'')=='' 或运算与''空值比较。当然,也可以写成这样!(exp||'')

先上测试代码:

14:48:36.569 !undefined
14:48:36.582 true
14:48:39.772 !null
14:48:39.782 true
14:48:50.949 !{}
14:48:50.955 false
14:49:04.523 ![]
14:49:04.529 false
14:49:13.672 !''
14:49:13.678 true
14:49:31.590 !false
14:49:31.595 true
14:49:41.325 !0
14:49:41.331 true
14:49:54.802 !'0'
14:49:54.810 false
14:54:32.478 (undefined||'')==''
14:54:32.486 true
14:54:39.293 (null||'')==''
14:54:39.301 true
14:54:44.883 ({}||'')==''
14:54:44.891 false
14:54:49.698 ([]||'')==''
14:54:49.706 true
14:55:23.469 (''||'')==''
14:55:23.475 true
14:55:34.095 (false||'')==''
14:55:34.104 true
14:55:45.016 (0||'')==''
14:55:45.026 true
14:55:51.745 ('0'||'')==''
14:55:51.755 false

再上对比表:(true 空值,false 非空)

方法/expundefinednull{}[]‘’false0‘0’
!exptruetruefalsefalsetruetruetruefalse
(exp||’’)==’’truetruefalsetruetruetruetruefalse
其他方法

通过表格可以看出:(这里暂时抛开exp是{}对象的情况)

  • 场景:不考虑[]数组的,两种方法都可用。
  • 场景:false(Boolean类型)和0(Number类型)可以当做空值处理的,两种方法都可用。
  • 场景:0视作正常值的,加上&& exp!==0
  • 场景:false视作正常值的,加上&& exp!==false
if(!exp){ 
//是空值
//todo ...
}
//或
if((exp||'')==''){ 
//是空值
//todo ...
}
//或
if(!(exp||'')){ 
//是空值
//todo ...
}

因此,推荐写法:!(exp||'')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值