我在html画布上摆弄条件运算符,想用一种简单有效的方法来用条件运算符更改笔触颜色。我似乎无法在网上找到一个很好的例子来完成这一工作。

以下是在没有条件运算符的情况下我该怎么做:

if (shape.strokecolor == 'black'){
    shape.strokecolor = 'red';
}
else if (shape.strokecolor == 'red'){
    shape.strokecolor = 'black';
}


我以为可以通过使用条件运算符来改善这一点。我发现这是可行的:

var strokecol = shape.strokecolor == 'black' ?
                shape.strokecolor = 'red' :
                shape.strokecolor == 'red' ?
                shape.strokecolor = 'black' :
                shape.strokecolor = 'red';


因此,这将是:


评估笔触颜色是否为黑色
如果为true,请将其更改为红色,
如果为假,则评估笔触颜色是否为红色
如果为true,请将其更改为黑色,
如果为假,则将其保留为红色。


似乎最后一行是操作员结构所必需的,但对我来说是多余的。似乎还必须将结果分配给变量,由于更改无论如何都会生效,因此我不需要此变量。而且我认为使用条件运算符会减少我的代码,但是这种方式并没有帮助。

我认为我做得不好...
我的主要问题是,是否可以在不分配变量的情况下使用这种条件运算符,其次,是否有人知道如何尽可能有效地改进给定代码(使用或不使用条件运算符)?谢谢。

最佳答案

使用条件运算符产生一个值,而不是副作用(如赋值)。然后,您可以将该值分配给适当的位置。如果唯一可能的颜色是黑色和红色,则可以这样写:

shape.strokecolor = shape.strokecolor == 'black' ? 'red' : 'black';


为了保持其他颜色的原始行为,您需要将属性分配回自身:

shape.strokecolor = shape.strokecolor == 'black' ? 'red' :
                    shape.strokecolor == 'red' ? 'black' :
                    shape.strokecolor;


但这并不比原始if好。

07-24 09:47