shorthand if 语句重构是否可行?

is shorthand if statment refactoring possible?

有没有办法为if statement制作shorthand?

对于

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

这个shorthand不行

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

虽然这会很好

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

有没有办法不用 : alert("no") 部分来写 shorthand?

您可以试试:

 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");

然而,这些(在我看来)不如简单地使用单行(无括号)if:

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

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

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

不过,这个有点丑

更好的选择是仅在语句为真时才执行函数:

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

如果左侧为真,&& 将只评估表达式的右侧。

(尝试在提示中输入10

这个:

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

被称为ternary operator。它通常用于从语句中确定 return 值。

你可以这样实现你的意思:

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

总之,不比普通的好if/else。它不是更具可读性。