自動的にループしている？のは何故でしょうか。


Javascriptについて質問です。

下記のコードの結果は "-1 Hold" なのですが、  
①で自動的にループ？のように順番に数字を処理し、値を合計してから②に進んでいるようなのですが、何故でしょうか。

私の予想としては、①②を処理し、アウトプットしてから次の値に進むと思っていました。  
(予想していた結果： "1 Bet", "1 Bet", "-1 Hold", "0 Hold", "-1 Hold" )

[code]

       var count = 0;
        function cc(card) {
       ①  switch (card){
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
              count++;
              break;
            case 10:
            case "J":
            case "Q":
            case "K":
            case "A":
              count--;
              break;
           }   
        ② if (count > 0) {
            return count + " Bet";
          }
          else {
            return count + " Hold";
          }
        }
        
        cc(3); cc(7); cc("Q"); cc(8); cc("A");    //結果： -1 Hold
    
[/code]

お助けいただければ幸いです。  
どうぞよろしくお願いいたします。




k system さんの回答が適切だと思います。

Suzuranさんのコメント

> JS Binを使って知りました。 consoleに 「cc(3); cc(7); cc("Q"); cc(8); cc("A");」と入れると、
> 結果が「-1 Hold」と出ました。

JS Bin のconsole欄に直接入力せずに次のコードで出力すると、「-1 Hold」を得られました。

[code]

    cc(3); cc(7); cc("Q"); cc(8); 
    console.log(cc("A"));
    
[/code]

JS Bin の console欄がちょっと特殊だと思うので、console欄に入力ではなく、console.log 命令を使うほうがよいと思います。




### 自動的にループしているについて

[code]

    cc(3); cc(7); cc("Q"); cc(8); cc("A");
    
[/code]

を順番に実行して **最後に実行した 文の処理結果が実行結果として表示されている** のです。

例えば

[code]

    var a = 1; var b = 2 ; a + b;
    
[/code]

は `3` が表示されます。

> (予想していた結果： "1 Bet", "1 Bet", "-1 Hold", "0 Hold", "-1 Hold" )

のであれば

[code]

    [ cc(3), cc(7) , cc("Q") , cc(8) , cc("A") ]
    
[/code]

として すべての計算の実行結果を 1つの 配列にすると、  
全ての関数の処理結果を まとめて表示できます。

または

[code]

    console.log(cc(3)); console.log(cc(7)); console.log(cc("Q")); console.log(cc(8)); console.log(cc("A"));
    
[/code]

でも 結果を表示できます。

### 計算結果が累計されている件

JavaScript は 変数宣言した場所によって その変数スコープ（変数が有効な範囲、見える範囲）が  
変わります。

関数の外で宣言しているため、宣言した時に 1回 初期化され  
関数が呼び出されるたびにその変数の値を 更新されています。

`count` の値を 0 にしたいのであれば

関数の中に `var count = 0` 宣言を入れるか  
関数の先頭で `count = 0` と変数の初期化をするとよいでしょう。

`count` の値を 他の場所で使わないのであれば 関数の中に入れた方がいいと思います。

