将if / else合并为一个语句? (JavaScript)的

时间:2015-08-24 07:00:36

标签: javascript ternary-operator

function changeButton () {
    if (event.currentTarget.className == 'btnRed') {
        event.currentTarget.className = 'btnGreen';
    } else {
        event.currentTarget.className = 'btnRed';
    }
}

假设我有上面的代码。我已经看到了类似的代码,这些代码将两者结合起来,但我真的不记得它是如何做到的。这就像className = (btnGreen | btnRed) 对于这个问题的含糊不清,我感到非常抱歉。

1 个答案:

答案 0 :(得分:4)

您可以使用三元运算符(condition) ? (true) : (false)

event.currentTarget.className = event.currentTarget.className == 'btnRed' ? 'btnGreen' : 'btnRed';

我会更进一步,将字符串提取到变量中,以消除在整个解决方案中输入错误的能力。并将event.currentTarget重构为变量。

var RED_BUTTON_CLASS = 'btnRed', 
    GREEN_BUTTON_CLASS = 'btnGreen';

var currentTarget = event.currentTarget;

currentTarget.className = currentTarget.className == RED_BUTTON_CLASS ? GREEN_BUTTON_CLASS : RED_BUTTON_CLASS;

从长远来看,我觉得这样做会更容易,完全可选

<强> 修改

所以从Jan所说的内容中添加额外的信息。

var RED_BUTTON_CLASS = 'btnRed', 
    GREEN_BUTTON_CLASS = 'btnGreen';

这些可能描述了一个州,所以你可以更好地命名它们:

var ERROR_BUTTON_CLASS = 'btnRed', 
    OK_BUTTON_CLASS = 'btnGreen';