如果是真的......否则是速记

use*_*851 3 javascript if-statement shorthand

我知道这个if语句的正常用例是例如

var string = boolean ? "this" : "that";
Run Code Online (Sandbox Code Playgroud)

我在编辑器中使用jhint,当我尝试类似的东西时

boolean ? array.push("this") : array.slice("that",1);
Run Code Online (Sandbox Code Playgroud)

jshint抛出(W030)"预期赋值或函数调用,而是看到一个表达式"

到目前为止,代码总是很好,但也许我只是幸运.

所以我的问题是,为什么我不应该使用这种模式,什么是另类?因为写作

if(boolean){
    array.push("this");
} else {
    array.splice("that",1);
}
Run Code Online (Sandbox Code Playgroud)

对于这么短的指示真的给了我毛骨悚然.

谢谢.

Sal*_*n A 5

可以将三元运算符包装在void operator这样的内容中:

void(cond ? expr1 : expr2);
Run Code Online (Sandbox Code Playgroud)

这实现了期望的结果并通过了JSHint.请参阅JSFiddle并单击JSHint按钮.

但是,我建议使用以下语法:

if (cond) {
    expr1;
} else {
    expr2;
}
Run Code Online (Sandbox Code Playgroud)

因为它更具可读性.仅仅因为JavaScript让你做出奇怪的事情并不意味着你应该这样做.