if判断是否有值,但是这个值为0,它也判了不过请问怎么写呢
// row保存
saveRow (record) {
const { num, id } = record
if (!num) { // 这里为0也走了,怎么判断单纯有没有值
this.tableLoading = false
this.$message.error('请填写完整信息。')
return
}
},
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
更多
发布评论
评论(12)
这里先要搞明白
num
允许是哪些值。如果只能是数字的话,可以这样不过这样的话,
num
还有可能是NaN
,一般NaN
也需要过滤掉(要不要过滤看业务),所以接下来,如果逻辑可以保证
num
只会是数字,或者空(含undefined
),那么可以这样判断如果用新语法 Nullish Coalescing,会简单一些
如果
NaN
算是合法的,那就得找个不应该出现的值(只能是一个非数字值了,幸好 JS 不绑定类型)更复杂的情况,如果
"1234"
(表示数的字符串)这种也算合法,还是老实的用typeof
吧如果
NaN
也合法,处理"string"
类型的时候会更伤心,因为需要先判断是否数字,用正则表达式判断当然,如果只是做数字判断的话,
NaN
不合法的情况下,用下面这个case "string"
代替上面那个也是没问题的。使用null或undefined,
num == null
双等判断下,undefined和null相等,0和空字符串、false相等
方法1: 编写isNil函数判断
方法2:用Lodash
方法3:用新语法,双问号
??
看你的变量命名,知道值是个number类型,或许可以换个思路
if (typeof num === 'number')
毕竟false, 空字符串,null,undefined类型各异
当然,要是值没限制类型,那还是别用了
多加一些空值判断,类似这样的
isNaN(num) 数字返回false 或 if(!num && num!=0)
if判断
其值为 0、-0、null、""、false、undefined 或者 NaN,那么if判断 false ,其他为true
虽然上面有很多大佬已经给出了各种方案,但我还是要吐槽一番,因为我也是0的受害者。而且是深受其害,接口字段定义太随便,枚举也都是从0开始定义,导致各种function有意无意的过滤掉,恶心的要死,只能是用全等去解决,但还是有0和"0"的区别的地方,总之一旦有0,就得针对性的去改代码。。。加油
自己封装一个方法
是0,不过是'0',所以变成false了
const { num, id } = record
判断record是否有某个字段?
Reflect.has(record, 'num')