操作员问题 Javascript
Operator problems Javascript
我正在尝试制作一个色轮,它首先选择 2 种颜色,最后在组合这两种原始颜色时输出正确的颜色。我基本上一切正常,但无法让操作员相应地工作,要么我做错了什么,也许有人可以指导我朝着正确的方向前进?
我已经尝试阅读有关运算符的内容,但无济于事,任何人都可以提供帮助或至少为我指明正确的方向吗?
这是我遇到问题的功能...
function resultColorFunction() {
if (colorSquareOne === blue || red && colorSquareTwo === red || blue)
{resultColor = purple;}
else if (colorSquareOne == blue || yellow & colorSquareTwo == yellow || blue)
{resultColor = green;}
else if (colorSquareOne == yellow || red & colorSquareTwo == red || yellow)
{resultColor = orange;}
show();
}
你的第一个错误是因为你像人一样思考。你认为 'when example is blue or red' 所以你写:
if ( example === 'blue' || 'red'){}
您必须检查两次:
if ( example === 'blue' || example === 'red'){}
您的第二个错误是使用 OR (||
) 和 AND (and
)。即使您当前的代码会通过第一个错误,您现在也有这个:
if ((one === 'blue' || one === 'red') && (two === 'red' || two === 'blue'))
那将是模棱两可的。如果两者都是红色或都是蓝色,这也会匹配。您切换了 AND 和 OR,应该是:
if (one === 'blue' && two === 'red') || (one === 'red' && two === 'blue')
你也重复了很多次,如果你有更多的颜色,这段代码是不可维护的。我建议您创建一个小函数来进行检查,然后使用它:
function isCombination(one, two, color1, color2){
return (one === color1 && two === color2) || (one === color2 && two === color1);
}
function resultColorFunction() {
if (isCombination(colorSquareOne, colorSquareTwo, 'blue', 'red') {
resultColor = purple;
}
else if (isCombination(colorSquareOne, colorSquareTwo, 'blue', 'yellow') {
resultColor = green;
}
else if (isCombination(colorSquareOne, colorSquareTwo, 'red', 'yellow') {
resultColor = orange;
}
show();
}
我正在尝试制作一个色轮,它首先选择 2 种颜色,最后在组合这两种原始颜色时输出正确的颜色。我基本上一切正常,但无法让操作员相应地工作,要么我做错了什么,也许有人可以指导我朝着正确的方向前进?
我已经尝试阅读有关运算符的内容,但无济于事,任何人都可以提供帮助或至少为我指明正确的方向吗?
这是我遇到问题的功能...
function resultColorFunction() {
if (colorSquareOne === blue || red && colorSquareTwo === red || blue)
{resultColor = purple;}
else if (colorSquareOne == blue || yellow & colorSquareTwo == yellow || blue)
{resultColor = green;}
else if (colorSquareOne == yellow || red & colorSquareTwo == red || yellow)
{resultColor = orange;}
show();
}
你的第一个错误是因为你像人一样思考。你认为 'when example is blue or red' 所以你写:
if ( example === 'blue' || 'red'){}
您必须检查两次:
if ( example === 'blue' || example === 'red'){}
您的第二个错误是使用 OR (||
) 和 AND (and
)。即使您当前的代码会通过第一个错误,您现在也有这个:
if ((one === 'blue' || one === 'red') && (two === 'red' || two === 'blue'))
那将是模棱两可的。如果两者都是红色或都是蓝色,这也会匹配。您切换了 AND 和 OR,应该是:
if (one === 'blue' && two === 'red') || (one === 'red' && two === 'blue')
你也重复了很多次,如果你有更多的颜色,这段代码是不可维护的。我建议您创建一个小函数来进行检查,然后使用它:
function isCombination(one, two, color1, color2){
return (one === color1 && two === color2) || (one === color2 && two === color1);
}
function resultColorFunction() {
if (isCombination(colorSquareOne, colorSquareTwo, 'blue', 'red') {
resultColor = purple;
}
else if (isCombination(colorSquareOne, colorSquareTwo, 'blue', 'yellow') {
resultColor = green;
}
else if (isCombination(colorSquareOne, colorSquareTwo, 'red', 'yellow') {
resultColor = orange;
}
show();
}