不分配给变量的条件运算符
conditional operator without assigning to variable
我正在 html canvas 上摆弄条件运算符,想要一种简单有效的方法来使用条件运算符更改笔触颜色。我似乎无法在网上找到一个很好的在线示例。
下面是没有条件运算符我会怎么做:
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';
所以这将是:
- 判断 strokecolor 是否为黑色
- 如果为真,将其更改为红色,
- 如果为 false,则评估 strokecolor 是否为红色
- 如果为真,将其更改为黑色,
- 如果为假,则将其保留为红色。
最后一行似乎是运算符结构所必需的,但对我来说是多余的。似乎我还必须将结果分配给一个变量,我不需要它,因为更改无论如何都会生效。而且我认为使用条件运算符会减少我的代码,但这种方式并没有真正帮助。
我觉得我做的不对...
我的主要问题是我是否可以使用这样的条件运算符而不分配给变量,其次,是否有人知道如何尽可能有效地改进给定代码(使用或不使用条件运算符)?谢谢。
使用条件运算符产生一个值,而不是副作用(如赋值)。然后您可以将该值分配给适当的位置。如果唯一可能的颜色是黑色和红色,你会这样写:
shape.strokecolor = shape.strokecolor == 'black' ? 'red' : 'black';
要保持其他颜色的原始行为,您需要将 属性 分配回自身:
shape.strokecolor = shape.strokecolor == 'black' ? 'red' :
shape.strokecolor == 'red' ? 'black' :
shape.strokecolor;
但这并没有比原来的更好 if
。
每次嵌套三元组时,都会有一只小狗死亡。
shape.strokecolor = shape.strokecolor.startsWith('b') ? 'red' : 'black';
我正在 html canvas 上摆弄条件运算符,想要一种简单有效的方法来使用条件运算符更改笔触颜色。我似乎无法在网上找到一个很好的在线示例。
下面是没有条件运算符我会怎么做:
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';
所以这将是:
- 判断 strokecolor 是否为黑色
- 如果为真,将其更改为红色,
- 如果为 false,则评估 strokecolor 是否为红色
- 如果为真,将其更改为黑色,
- 如果为假,则将其保留为红色。
最后一行似乎是运算符结构所必需的,但对我来说是多余的。似乎我还必须将结果分配给一个变量,我不需要它,因为更改无论如何都会生效。而且我认为使用条件运算符会减少我的代码,但这种方式并没有真正帮助。
我觉得我做的不对... 我的主要问题是我是否可以使用这样的条件运算符而不分配给变量,其次,是否有人知道如何尽可能有效地改进给定代码(使用或不使用条件运算符)?谢谢。
使用条件运算符产生一个值,而不是副作用(如赋值)。然后您可以将该值分配给适当的位置。如果唯一可能的颜色是黑色和红色,你会这样写:
shape.strokecolor = shape.strokecolor == 'black' ? 'red' : 'black';
要保持其他颜色的原始行为,您需要将 属性 分配回自身:
shape.strokecolor = shape.strokecolor == 'black' ? 'red' :
shape.strokecolor == 'red' ? 'black' :
shape.strokecolor;
但这并没有比原来的更好 if
。
每次嵌套三元组时,都会有一只小狗死亡。
shape.strokecolor = shape.strokecolor.startsWith('b') ? 'red' : 'black';