有没有办法为if statement制作速记?
代表
if(window.scrollY > 0 ){
alert("yes")
}
这种速记不起作用
window.scrollY > 0 ? alert("yes")
虽然这样可以正常使用
window.scrollY > 0 ? alert("yes") : alert("no")
有没有办法在没有: alert("no")
部分的情况下编写速记?
答案 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");
&&
只评估表达式的右侧,如果左侧是真实的。
(尝试在提示中输入1
和0
)
答案 3 :(得分:1)
此:
window.scrollY > 0 ? alert("yes") : alert("no");
称为ternary operator
。它通常用于确定语句的返回值。
你可以通过这种方式实现你的意思:
(window.scrollY > 0) && alert("yes");
无论如何,它绝不比普通的if/else
好。它的可读性不高。