如果可以进行语句重构,则是简写

is shorthand if statment refactoring possible?

本文关键字:重构 语句 如果可以      更新时间:2023-09-26

有没有一种方法可以简化if语句?

对于

if(window.scrollY > 0 ){
        alert("yes")
}

无法使用此速记

 window.scrollY > 0 ? alert("yes")

而这将工作良好

window.scrollY > 0 ?  alert("yes") : alert("no")

有没有一种方法可以在没有: alert("no")部分的情况下写速记?

您可以尝试使用:

 window.scrollY > 0 && alert("yes");

只需为不需要的情况设置null

window.scrollY > 0 ? alert("yes") : null;

或者,正如@hsz所指出的,您可以利用JavaScript布尔表达式的短路特性,并使用:

window.scrollY > 0 && alert("Yes");
// or even take advantage of the fact that zero coerces to false
window.scrollY && alert("Yes");

然而,(在我看来)这些并不像简单地使用一行(braceles)if:那样可读

if(window.scrollY > 0) alert("yes");

您可以用0替换alert("no"),因为三元运算符总是必须有一个"false"参数:

prompt('value') > 0 ? alert("yes") : 0 ;

不过,这有点难看。

一个更好的选择是只在语句为true时执行函数:

prompt('value') > 0 && alert("yes");

如果表达式的右侧是真的,则&&将只计算表达式的右侧。

(尝试在提示中输入10

这:

window.scrollY > 0 ? alert("yes") : alert("no");

称为CCD_ 9。它通常用于确定语句的返回值。

你可以通过这样的方式实现你的意思:

(window.scrollY > 0) && alert("yes");

无论如何,它绝不比普通的if/else更好。它的可读性再好不过了。