【问题标题】:Operator problems Javascript操作员问题 Javascript
【发布时间】:2020-05-06 09:49:13
【问题描述】:

我正在尝试制作一个色轮,它首先选择两种颜色,最后在组合这两种原始颜色时输出正确的颜色。我几乎已经完成了所有工作,但无法让操作员相应地工作,或者我做错了什么,也许有人可以引导我朝着正确的方向前进?

我尝试阅读有关运营商的信息,但没有任何帮助,任何人都可以帮助或至少为我指明正确的方向吗?

这是我遇到问题的功能...

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();
}

【问题讨论】:

  • 什么是输入,什么是不正确的输出?向我们提供更多详细信息,否则它将很快关闭
  • 很明显想要什么。这不需要关闭,您所要做的就是阅读他的条件。下面的 cmets 回答了他的问题,这一事实就足以证明。
  • 1.您可能想要比较字符串。所以if (colorSquareOne === "blue" - 2. 你不能做if (something === x || y) 你需要再次指定变量:if (something === x || something === y)
  • colorSquareOne === blue || red 应该是colorSquareOne === blue || colorSquareOne == red (假设作用域中有变量名为redblue。如果是比较字符串,则需要在它们周围加上引号"red") .并且 Single & 应该是 &&
  • @Martijn 我已经重新打开了。代码中还有其他逻辑问题。当其中一个是蓝色而另一个是红色时,OP 只想要紫色。不是当它们都是蓝色的时候。

标签: javascript operator-keyword


【解决方案1】:

您的第一个错误是因为您像人类一样思考。你认为'当示例是蓝色或红色时',所以你写:

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();
}

【讨论】:

    猜你喜欢
    • 2011-02-13
    • 2010-11-25
    • 2015-07-25
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多