Freecodecamp: 挑战中的错误:使用多个条件(三元)运算符。

创建于 2020-05-22  ·  16评论  ·  资料来源: freeCodeCamp/freeCodeCamp


描述您的问题以及如何重现它:
错误-测试以下代码失败,并出现错误:checkSign应该使用多个条件运算符。

function checkSign(num) {
  return (num!==0) ?(num>0) ? "positive" 
    : "negative" 
    : "zero";
}


console.log(checkSign(10));
console.log(checkSign(-10));
console.log(checkSign(0));

屏幕截图-1:
image

截图-2:
image

如何复制它。
而不是错误:“ checkSign应该使用多个条件运算符。”
错误应该是:在三元运算符的声明为真部分中使用多个三元运算符不是最佳实践。

(增加错误消息的清晰度)

将链接添加到有问题的页面:
链接挑战;
链接到在论坛上的

first timers only help wanted learn

最有用的评论

“格式化多个条件运算符是一种最佳实践,以使每个条件都位于单独的行上(如示例中所示),以提高可读性。”

我将添加类似的注释。

所有16条评论

我同意进行一些调整是有道理的。 如果我们可以捕获以下事实,我会有所帮助:a)您未使用多重三元组,或者b)三元组的格式不正确。

我不认为这是挑战所要求的: https :

这是来自文档的代码:

function example(…) {
    return condition1 ? value1
         : condition2 ? value2
         : condition3 ? value3
         : value4;
}

您构造的是:

function checkSign(num) {
  if (num!==0) {
    if (num>0) {
      return "positive";
    } else {
      return "negative";
    }
  } else {
    return "zero";
  }
}

我同意,您已完成任务。 但是,预期的已实现逻辑具有以下形式:

function findGreaterOrEqual(a, b) {
  if (a === b) {
    return "a and b are equal";
  }
  else if (a > b) {
    return "a is greater";
  }
  else {
    return "b is greater";
  }
}

因此,也许我们应该将挑战说明更改为更具体的格式...

我不认为这是挑战所要求的: https :

这是来自文档的代码:

function example(…) {
    return condition1 ? value1
         : condition2 ? value2
         : condition3 ? value3
         : value4;
}

您构造的是:

function checkSign(num) {
  if (num!==0) {
    if (num>0) {
      return "positive";
    } else {
      return "negative";
    }
  } else {
    return "zero";
  }
}

我同意,您已完成任务。 但是,预期的已实现逻辑具有以下形式:

function findGreaterOrEqual(a, b) {
  if (a === b) {
    return "a and b are equal";
  }
  else if (a > b) {
    return "a is greater";
  }
  else {
    return "b is greater";
  }
}

因此,也许我们应该将挑战说明更改为更具体的格式...

主席先生,请注意:此存储库属于Free Code Camp 。 谢谢您的回复。

@FelixBoscoJ ,哈哈。 是的,我很清楚。 我链接到Mozilla文档来检索多个条件三元运算符的示例。

我的观点仍然完全正确。

@FelixBoscoJ ,哈哈。 是的,我很清楚。 我链接到Mozilla文档来检索多个条件三元运算符的示例。

我的观点仍然完全正确。

```js
函数checkSign(num){
return(num!== 0)?(num> 0)? “正”
:“负数”
:“零”;
}

console.log(checkSign(10));
console.log(checkSign(-10));
console.log(checkSign(0));

``
请在此挑战中尝试上面的代码。 请检查通过挑战所需的条件。

@FelixBoscoJ ,我知道,而且我完全理解为什么创建此问题。 我要指出的是,您的解决方案的格式不是预期的,这在本课给出的示例中可以清楚地看出:

function checkSign(num) {
  if (num!==0) {
    if (num>0) {
      return "positive";
    } else {
      return "negative";
    }
  } else {
    return "zero";
  }
}

我同意,您已经完成了任务。 但是,预期的已实现逻辑具有以下形式:

function findGreaterOrEqual(a, b) {
  if (a === b) {
    return "a and b are equal";
  }
  else if (a > b) {
    return "a is greater";
  }
  else {
    return "b is greater";
  }
}

您的解决方案不包含else if逻辑。

@FelixBoscoJ ,我知道,而且我完全理解为什么创建此问题。 我要指出的是,您的解决方案的格式不是预期的,这在本课给出的示例中可以清楚地看出:

function checkSign(num) {
  if (num!==0) {
    if (num>0) {
      return "positive";
    } else {
      return "negative";
    }
  } else {
    return "zero";
  }
}

我同意,您已经完成了任务。 但是,预期的已实现逻辑具有以下形式:

function findGreaterOrEqual(a, b) {
  if (a === b) {
    return "a and b are equal";
  }
  else if (a > b) {
    return "a is greater";
  }
  else {
    return "b is greater";
  }
}

您的解决方案不包含else if逻辑。

主席先生,赢得挑战的条件是:

在checkSign函数中使用多个条件运算符来检查数字是正数,负数还是零。

我们应该使用多个条件(三元)运算符。

错误消息也许应该是“ ...建议的格式的多个条件运算符”。

或许可以按照以下说明添加注释:“这是格式化多个条件运算符的最佳做法,以使每个条件都位于单独的一行(如示例中所示),以提高可读性。”

“格式化多个条件运算符是一种最佳实践,以使每个条件都位于单独的行上(如示例中所示),以提高可读性。”

我将添加类似的注释。

关闭? 是否合并了对说明的更新?

@ Sky020无法使用三元运算符实现if / else if / else逻辑。 但是任务可以完成。

我同意,您已经完成了任务。 但是,预期的已实现逻辑具有以下形式:

 function findGreaterOrEqual(a, b) {
   if (a === b) {
     return "a and b are equal";
   }
   else if (a > b) {
     return "a is greater";
   }
   else {
     return "b is greater";
   }
 }

不,预期的实现逻辑的形式为:
```js
函数findGreaterOrEqual(a,b){

如果(a === b){
返回“ a和b相等”;
}
其他{
如果(num> 0){
返回“正”;
}其他{
返回“负”;
}
}
}

```

@费利克斯·博斯科

期望的解决方案(6个,非常类似于您的最终答案):

function checkSign(num) {
  return (num > 0) ? "positive" 
    : (num < 0) ? "negative"
    : "zero";
}

If-else版本

function checkSign(num) {
  if (num > 0) {
    return "positive";
 } else if (num < 0) {
    return "negative";
 } else {
    return "zero";
 } 
}

三元或多个三元总是可以用if-else编写。 挑战和描述是准确的。 我们只想添加一个或两个澄清的注释,以强调可读性的最佳实践格式。

没关系。

在我看来,添加澄清的注释是最好的解决方案。 因此,让我们保持打开状态直到PR被合并。

如果可能的话,我想跳下去。 我是初学者,但真的很高兴学习!

去吧,@ jasnkwcz。 对于初学者来说,这应该是一个好问题。

我建议您看一下贡献指南,如果遇到困难,请在贡献者的聊天室问一下

此页面是否有帮助?
0 / 5 - 0 等级