質問: 0; function cc(card) { 1 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; } 2 if (count > 0) { return count + " Bet"; } else { return count + " Hold"; } } cc(3); cc(7); cc("Q"); cc(8); cc("A"); //結果: -1 Hold ``` お助けいただければ幸いです。 どうぞよろしくお願いいたします。
回答: ### 自動的にループしているについて ``` cc(3); cc(7); cc("Q"); cc(8); cc("A"); ``` を順番に実行して**最後に実行した 文の処理結果が実行結果として表示されている**のです。 例えば ``` var a = 1; var b = 2 ; a + b; ``` は `3` が表示されます。 > > (予想していた結果: "1 Bet", "1 Bet", "-1 Hold", "0 Hold", "-1 Hold" ) > > > のであれば ``` [ cc(3), cc(7) , cc("Q") , cc(8) , cc("A") ] ``` として すべての計算の実行結果を 1つの 配列にすると、 全ての関数の処理結果を まとめて表示できます。 または ``` console.log(cc(3)); console.log(cc(7)); console.log(cc("Q")); console.log(cc(8)); console.log(cc("A")); ``` でも 結果を表示できます。 ### 計算結果が累計されている件 JavaScript は 変数宣言した場所によって その変数スコープ(変数が有効な範囲、見える範囲)が 変わります。 関数の外で宣言しているため、宣言した時に 1回 初期化され 関数が呼び出されるたびにその変数の値を 更新されています。 `count` の値を 0 にしたいのであれば 関数の中に `var count = 0` 宣言を入れるか 関数の先頭で `count = 0` と変数の初期化をするとよいでしょう。 `count` の値を 他の場所で使わないのであれば 関数の中に入れた方がいいと思います。