前言:三元表达式我一般用在条件赋值,遇到条件赋值我的第一反应就是三元表达式,但这样有时出现“滥用”,那么在这些“滥用”的情况中我们可以用哪些更好的方式替换三元表达式?
正常情况下,使用三元表达式赋值,?
和 :
后面都应该是有值的。
<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) : ''
);