计数卡代码说明

时间:2017-03-25 15:45:01

标签: javascript

我正在进行FreeCodeCamp课程,并且对于为什么我的代码不起作用感到困惑。这似乎是正确答案的一个混乱版本。下面是正确的答案,下面是我的。我只想了解。

这是正确答案:

var count = 0;

function cc(card) {
  {
   case 2:
   case 3:
   case 4:
   case 5:
   case 6:
  return count++;
   case 7:
   case 8:
   case 9:
  return count;
   case 10:
   case 'J':
   case 'Q':
   case 'K':
   case 'A':
  return count--;
 }
}

以下是我的回答:

var count = 0;

function cc(card) {
  // Only change code below this line
  switch (card) {
    case 2:
      return count + 1;
    case 3:
      return count + 1;
    case 4:    
      return count + 1;
    case 5:
      return count + 1;
    case 6:
      return count + 1;
    case 7:
      return count + 0;
    case 8:
      return count + 0;
    case 9:
      return count + 0;
    case 10:
      return count - 1;
    case 'J':
      return count - 1;
    case 'Q':
      return count - 1;
    case 'K':
      return count - 1;
    case 'A':
      return count - 1;
  }
  if (count <= 0){
    return count + " hold";
  } else {
    return count + " bet";
}

2 个答案:

答案 0 :(得分:2)

两个不同;你得到了什么以及修改了什么

  • count++count--会返回count的值,然后修改count
  • count + 1count - 1会根据计数返回计算值,不会修改计数

考虑

let x = 1;
x++; // 1
x; // 2

VS

let x = 1;
x + 1; // 2
x; // 1

值得注意的是,一元递增和递减运算符可以使用前缀,它在返回值之前执行修改,即

let x = 1;
++x; // 2
x; // 2

此外,请注意,if (count <= 0) ...假设card [2-9JQKA]|10无法达到您的条件,因为之前的return始终会被调用。

最后,由于我无法看到输入,我无法确定这一点,但看起来这段代码混合了 Number String 。考虑选择一种类型可能是明智之举,因此不会出现意外行为。

根据A所需的行为,我建议使用 Number 并映射{J: 11, Q: 12, K: 13, A: 14},或者在 String 中执行所有操作。

答案 1 :(得分:0)

var count = 0;

function cc(card) {
  switch(card) {
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
      count += 1;
      break;
    case 7:
    case 8:
    case 9:
      count += 0;
      break;
    case 10:
    case 'J':
    case 'Q':
    case 'K':
    case 'A':
      count -= 1;
      break;
  }

  return count + (count > 0 ? " Bet" : " Hold");
}