描述您的问题以及如何重现它:
错误-测试以下代码失败,并出现错误: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:
截图-2:
如何复制它。
而不是错误:“ checkSign应该使用多个条件运算符。”
错误应该是:在三元运算符的声明为真部分中使用多个三元运算符不是最佳实践。
(增加错误消息的清晰度)
我同意进行一些调整是有道理的。 如果我们可以捕获以下事实,我会有所帮助: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被合并。
如果可能的话,我想跳下去。 我是初学者,但真的很高兴学习!
最有用的评论
我将添加类似的注释。