如果声明重构可能是简写?

时间:2015-02-11 13:13:09

标签: javascript if-statement

有没有办法为if statement制作速记?

代表

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

这种速记不起作用

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

虽然这样可以正常使用

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

有没有办法在没有: alert("no")部分的情况下编写速记?

4 个答案:

答案 0 :(得分:4)

您可以尝试:

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

答案 1 :(得分:2)

只需将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");

答案 2 :(得分:2)

您可以将alert("no")替换为0,因为三元运算符始终必须具有“false”参数:

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

然而,这有点难看。

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

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

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

(尝试在提示中输入10

答案 3 :(得分:1)

此:

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

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

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

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

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