javascript - Freecodecamp - 数牌
问题描述
我知道有很多方法可以完成这个挑战,我可以简单地通过不同的方法来通过要求,但是我很难理解我的代码有什么问题。
任何帮助将非常感激。
var count = 0;
function cc(card) {
// Only change code below this line
if (card < 7){
count++;
} else if (card < 10){
count+=0;
} else (count--;)
if (count > 0){
return count + " Bet";
} else (
return count + " Hold";
)
// Only change code above this line
}
// Add/remove calls to test your function.
// Note: Only the last will display
cc(2); cc(3); cc(7); cc('K'); cc('A');
解决方案
首先,当您尝试执行代码时,您应该看到一个语法错误,指向(count--;)
. 这样做的原因是:else
期望一个语句,如果它看到一个括号则意味着该语句是一个表达式,并且在一个表达式中,分号不能出现在括号内(这是相当简化的)。正确的写法是不带括号(通常不赞成) as else count--;
,或者带花括号:else { count--; }
。
当您修复该错误时,还会出现另一个相同类型的错误,因为您似乎系统地在else
.
在那之后,你的代码就可以工作了。有问题的比较card
, 可以是一个字母或一个数字,与一个整数,但它巧合地按照您希望的方式工作(因为'K'
,'Q'
并且'J'
恰好被评估为大于7
和10
。)最好不要依赖这样的魔法,并且有一个字母和值之间的翻译表 - 或者至少,如果你要依赖魔法,请发表评论,让读者知道你意识到了魔法。此外,count+=0
是一个无效的声明,它什么都不做,并且可以被忽略。这会给你留下一个空的else if
,但这不是一个错误。但是,如果您有if (card < 7) { count--; } else if (card >= 10) { count++; }
.
推荐阅读
- r - R:如何对数据框中的每一列应用一个复杂的函数,为每一列输出新的数据框?
- android - 如何防止键入文本的下划线以及所有大写字母?
- .net-core - .Net Core 项目似乎没有找到 SDK
- python - 从字典中读取时,我得到“int”对象没有属性“__getitem__”错误
- c# - 如何在 Flutter 中使用外部 DLL(Dot Net)?
- javascript - 将 Javascript 变量抓取到 Python 中
- c# - 匹配时间格式的正则表达式
- python-3.x - 无法使用 selenium python 迭代列表中的整数
- mysql - MySQL - 多行或 JSON
- swift - 如何修复“函数声明了一个不透明的返回类型,但在其主体中没有返回语句可以从中推断出基础类型”错误?