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");
如果左侧为真,&&
将只评估表达式的右侧。
(尝试在提示中输入1
和0
)
这个:
window.scrollY > 0 ? alert("yes") : alert("no");
被称为ternary operator
。它通常用于从语句中确定 return 值。
你可以这样实现你的意思:
(window.scrollY > 0) && alert("yes");
总之,不比普通的好if/else
。它不是更具可读性。
有没有办法为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");
如果左侧为真,&&
将只评估表达式的右侧。
(尝试在提示中输入1
和0
)
这个:
window.scrollY > 0 ? alert("yes") : alert("no");
被称为ternary operator
。它通常用于从语句中确定 return 值。
你可以这样实现你的意思:
(window.scrollY > 0) && alert("yes");
总之,不比普通的好if/else
。它不是更具可读性。