双三元运算符,对一个结果没有任何作用

时间:2018-03-05 15:32:56

标签: javascript ternary-operator

如果outcome既不是1也不是-1,我希望我的三元运算符不做任何事情

outcome === 1 ? playerScore++ : outcome === -1 ? compScore++ : DO_NOTHING;

我意识到我可以写一个0而不是DO_NOTHING,但有没有更好的方法可以确保在需要时什么也不会发生?

编辑:DO_NOTHING只是一个占位符,可能无法做任何解决方案。目前我已经写了0而不是它。

4 个答案:

答案 0 :(得分:5)

  

......但如果需要,是否有更好的方法可以确保没有任何事情发生?

不使用条件运算符,不;你必须有的东西0和其他任何东西一样好。或as zfrisch notes,您可以使用&&而不是第二个条件(有关详细信息,请参阅该答案)。

这是一种风格问题,但“更好的方法”是首先使用ifswitch而不是条件运算符。

if (outcome == 1) {
    playerScore++;
} else if (outcome == -1) {
    compScore++;
}

switch (outcome) {
    case 1:
        playerScore++;
        break;
    case -1:
        compScore++;
        break;
}

如果你想将它压缩成交货,那就是minifiers / uglifiers / compressors的用途。 : - )

答案 1 :(得分:2)

如果您真的想使用一些简短的方法,可以使用检查和逻辑AND来递增所需变量。

outcome === 1 && playerScore++;
outcome === -1 && compScore++;

答案 2 :(得分:1)

您可以使用嵌套的Logical&&操作者。

expr1 && expr2

如果expr1为true,它将运行expr2。这意味着:

outcome === 1 ? playerScore++ : outcome === -1 && compScore++;

为结果执行三元组,如果为true则会增加playerScore,如果为false则仅在结果等于-1时增加compScore。

let outcome = 1, playerScore = 0, compScore = 0;
//playScore++
outcome === 1 ? playerScore++ : outcome === -1 && compScore++;

//compScore++
outcome = -1;
outcome === 1 ? playerScore++ : outcome === -1 && compScore++;

console.log(playerScore, compScore);

答案 3 :(得分:0)

我认为您可以定义noop函数,或者如果您使用任何函数,则使用框架中的函数,如this question的答案中所建议的那样,代码更具可读性。

处理此问题的更好方法是if语句。因为你没有将三元运算符的结果分配给任何东西。所以if语句就足够了。如果您的目标是使用更少的空间,您可以使用任何缩放器/ uglifiers /压缩器作为T.J.克劳德建议道。

https://stackoverflow.com/a/33458430/5268235

var noop = function () {};           // Define your own noop in ES3 or ES5
const noop = () => {};               // OR Define your own noop in ES6
setTimeout(noop, 10000);             // Using the predefined noop

setTimeout(function () {} , 10000);  // Using directly in ES3 or ES5
setTimeout(() => {} , 10000);        // Using directly in ES6 as Lambda (arrow function)

setTimeout(angular.noop, 10000);     // Using with angular 1.x
setTimeout(jQuery.noop, 10000);      // Using with jQuery