我劝你不要乱写三元表达式,你看看这容易读懂吗
代码是写给人看的,不是写给机器看的,机器只喜欢01,你会写01吗?
发现别的同事写的一段代码,实在是难以理解,如下:
1 2 3 4 5 6 7 8 9 10
| item.renewalStartDate = item.orderStatus == 2 ? item.payType == 3 ? item.auditDate ? dayjs(item.auditDate).format('YYYY-MM-DD') : '' : item.payDate ? dayjs(item.payDate).format('YYYY-MM-DD') : '' : '';
|
你看看上面这段代码,它容易读懂吗?真是服了,写的啥啊?
给上面的代码加一下小括号,应该可以协助理解,经过仔细研究,改写成这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| item.renewalStartDate = item.orderStatus == 2 ? (item.payType == 3 ? ( item.auditDate ? dayjs(item.auditDate).format('YYYY-MM-DD') : '' ) : ( item.payDate ? dayjs(item.payDate).format('YYYY-MM-DD') : '' ) ) : '';
|
因为三元表达式的问好和冒号冒号都是成对出现的,可以改写。但是嵌套起来真的不好阅读。
其实不如写成if else的形式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| let res = '' if(item.orderStatus == 2){ if(item.payType == 3){ if(item.auditDate){ res = dayjs(item.auditDate).format('YYYY-MM-DD') } else { res = '' } } else { if(item.payDate){ res = dayjs(item.payDate).format('YYYY-MM-DD') } else { res = '' } } } else { res = '' } item.renewalStartDate = res
|
这样是不是清晰易懂了呢。不知道是我的阅读能力的问题,还是原先的代码写的太骚。