谈谈js三元表达式

前言:三元表达式我一般用在条件赋值,遇到条件赋值我的第一反应就是三元表达式,但这样有时出现“滥用”,那么在这些“滥用”的情况中我们可以用哪些更好的方式替换三元表达式?

正常情况下,使用三元表达式赋值, 后面都应该是有值的。

 <Button
	type={type === REPORT ? 'primary' : 'secondary'}
>

而出现下面的情况,就说明不应该使用三元表达式了。

1、遇到true/false,证明可以直接赋值,不需要三元表达式

const temp = obj? true : false;  // ❎
const temp = !!obj; // ✅  !!的意思是转换为布尔类型

2、如果表达式中,?或者:有一个后面是什么都不做,那么就要考虑下是不是可以直接赋值,或使用 && 或 II优化

className={isRequired === REQUIRED ? "styles.error" : ""} // ❎


className={classnames(styles.text_select, {
	[styles.error]:
    isRequired === REQUIRED && check(fieldName),
})} // ✅ 

当然,这种情况下,也不是所有情况下都可以将三元表达式替换为更优的写法。

const urlParam = qs.parse(
	window.location.search.startsWith('?') ? window.location.search.slice(1) : ''
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值