谈谈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) : ''
);

猜你喜欢

转载自blog.csdn.net/xiaoxiannv666/article/details/120642530
今日推荐