JavaScript 中 0 和 null 的判断

描述

假如后端接口返回数据type,type取值为0,1,2,3,4(都是数字类型)这四个值是有效值,当type取不到值的时候返回null。

现在,前端请求接口获取到数据后,拿到type,当type为null时,需要给一个默认值2,那么你会怎么赋值?

// 接口返回的报文体假如是这样的
const res = {
    success: true,
    data: {
        type: null
    }
}

// 前端变量type
const type = res.data.type || 2

如果你是这样赋值,那么如果res.data.type 等于0时会不会有问题呢?显然,如果为0,type会被赋值为2,这样就错了!

所以,首先要排除是不是null

// 前端变量type
let type
if (res.data.type === null) {
    type = 2
} else {
    type = res.data.type
}

这样是可以实现的,但是代码量比较多,也是比较普通的一种。

你也可能会想到,判断一下res.data.type是不是数字就行了。这样确实是一种思路,那么js中怎样判断是否是数字呢?最直接想到的应该就是isNaN了吧

// !isNaN(变量)返回true代表是数字,返回fasle代表非数字
// 前端变量
const type = !isNaN(res.data.type) ? res.data.type : 2

但是这样对吗???

控制台你可以试一下,

!isNaN(null) = true // !isNaN(null)返回true

这是为什么?

因为如果isNaN函数的参数不是Number类型, isNaN()会首先尝试将这个参数转换为数值,然后才会对转换后的结果是否是NaN进行判断。null被转换成0了

那有没有好方法呢?我是这样做的

可以利用 NaN 与任何值(包括其自身)相比得到的结果均是 false,这一特性,再利用parseInt方法,具体代码如下

// parseInt(null) = NaN,而NaN和任何值比较都返回fasle
// 前端变量
const type = parseInt(res.data.type) >=0 ? res.data.type : 2

OK!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值