Javascript 从switch语句获取计数

Javascript 从switch语句获取计数,javascript,jquery,Javascript,Jquery,我在通过switch语句运行返回的计数后,在获取要更改的计数时遇到问题。我的代码如下所示: var count = 0; switch ($(this).last().data('card')) { // Regulating the count to be higher/lower // Hearts case 'h2': return count++;

我在通过switch语句运行返回的计数后,在获取要更改的计数时遇到问题。我的代码如下所示:

var count = 0;
                switch ($(this).last().data('card')) { // Regulating the count to be higher/lower  
                // Hearts
                case 'h2':
                    return count++;
                case 'h3':
                    return count++;
                case 'h4':
                    return count++;
                case 'h5':
                    return count++;
                case 'h6':
                    return count++;
                case 'h10':
                    return count--;
                case 'hj':
                    return count--;
                case 'hq':
                    return count--;
                case 'hk':
                    return count--;
                case 'ha':
                    return count--;

                    // Spades
                case 's2':
                    return count++;
                case 's3':
                    return count++;
                case 's4':
                    return count++;
                case 's5':
                    return count++;
                case 's6':
                    return count++;
                case 's10':
                    return count--;
                case 'sj':
                    return count--;
                case 'sq':
                    return count--;
                case 'sk':
                    return count--;
                case 'sa':
                    return count--;

                    // Diamonds
                case 'd2':
                    return count++;
                case 'd3':
                    return count++;
                case 'd4':
                    return count++;
                case 'd5':
                    return count++;
                case 'd6':
                    return count++;
                case 'd10':
                    return count--;
                case 'dj':
                    return count--;
                case 'dq':
                    return count--;
                case 'dk':
                    return count--;
                case 'da':
                    return count--;

                    // Clubs
                case 'c2':
                    return count++;
                case 'c3':
                    return count++;
                case 'c4':
                    return count++;
                case 'c5':
                    return count++;
                case 'c6':
                    return count++;
                case 'c10':
                    return count--;
                case 'cj':
                    return count--;
                case 'cq':
                    return count--;
                case 'ck':
                    return count--;
                case 'ca':
                    return count--;
            }
        })();

        console.log(count);
当我试图控制台注销它时,它只输出0。即使我用'h2'替换jQuery,它也不能解决问题


我希望有人能帮我:-)

++count
--count
代替。这些将在返回值之前递增和递减该值。您的代码返回当前的
count
值0,之后不会执行任何操作


.

使用
++count
--count
。这些将在返回值之前递增和递减该值。您的代码返回当前的
count
值0,之后不会执行任何操作


所以。。。
returncount++
将返回
计数
,然后递增

您可以在操作发生之前将增量操作符前缀为increment

return++计数

递减运算符(
--count
)的工作方式相同

您可以将此小提琴视为用法示例:

添加后缀的增量运算符将在
之后增加值

所以。。。
returncount++
将返回
计数
,然后递增

您可以在操作发生之前将增量操作符前缀为increment

return++计数

递减运算符(
--count
)的工作方式相同

您可以将此小提琴视为用法示例:

当我试图控制台注销它时,它只输出0

你在做后缀增量:

returncount++

这将返回
count
的值,然后增加
count
的值

这一点也一样:

return count--;
这将返回
count
的值,然后减小
count
的值

要简单地克服这个问题:

return ++count; 
而且

return --count; 

当我试图控制台注销它时,它只输出0

你在做后缀增量:

returncount++

这将返回
count
的值,然后增加
count
的值

这一点也一样:

return count--;
这将返回
count
的值,然后减小
count
的值

要简单地克服这个问题:

return ++count; 
而且

return --count; 

后缀运算符在包含它的操作数之后递增操作数。如果你这样做的话,它会有更具体的条款

var x = 0;

var y = (function incrementX() {
  return x++;
})()

console.log(y) //prints 0
console.log(x) //prints 1
++
实际上在
返回之后运行。因此,返回并存储在
y
中的值是
x
的旧值

++
前缀运算符执行您想要的操作。它在操作的其余部分之前递增其操作数。因此,如果用
++count
替换
count++
,代码应该可以工作


--
运算符的行为与此相同。

后缀运算符在包含它的操作之后递增其操作数。如果你这样做的话,它会有更具体的条款

var x = 0;

var y = (function incrementX() {
  return x++;
})()

console.log(y) //prints 0
console.log(x) //prints 1
++
实际上在
返回之后运行。因此,返回并存储在
y
中的值是
x
的旧值

++
前缀运算符执行您想要的操作。它在操作的其余部分之前递增其操作数。因此,如果用
++count
替换
count++
,代码应该可以工作


--
运算符的行为方式与此相同。

开关不是用于这种情况的最佳选择,因为它更好,但为了便于学习,您可以这样编写开关。断开或返回任何一个都可以根据您的要求断开开关

var计数=0;
var count2=(函数(){
开关($(this).last().data('card')| |“h2”){//将计数调整为较高/较低
//心
案例“h2”:
案例“h3”:
案例“h4”:
‘h5’个案:
案例“h6”:
案例“s2”:
个案‘s3’:
案例“s4”:
案例“s5”:
个案‘s6’:
返回计数++;
案例“h10”:
案例“hj”:
案件"总部":
案件‘香港’:
个案"ha":
//黑桃
案例“s10”:
案件‘sj’:
案例“sq”:
案例“sk”:
案例“sa”:
返回计数--;
}
})();
控制台日志(计数);
console.log(count2)

在这种情况下,Switch不是最好的选择,因为它更好,但为了您的学习,您可以这样编写Switch。断开或返回任何一个都可以根据您的要求断开开关

var计数=0;
var count2=(函数(){
开关($(this).last().data('card')| |“h2”){//将计数调整为较高/较低
//心
案例“h2”:
案例“h3”:
案例“h4”:
‘h5’个案:
案例“h6”:
案例“s2”:
个案‘s3’:
案例“s4”:
案例“s5”:
个案‘s6’:
返回计数++;
案例“h10”:
案例“hj”:
案件"总部":
案件‘香港’:
个案"ha":
//黑桃
案例“s10”:
案件‘sj’:
案例“sq”:
案例“sk”:
案例“sa”:
返回计数--;
}
})();
控制台日志(计数);
console.log(count2)

不,我不是直接回答你的问题。我只是觉得我可能能够帮助您改进代码,使之更易于使用。它甚至可以帮助您为下一次可能需要执行的卡牌操作找到更好的解决方案

所有这些转换。。。写作是一种痛苦,维护也是一种痛苦

通过一些字符串操作和一些预定义数组,您可以让自己的生活变得更加轻松:

//var cardValue="c10"; //for instance

var suits = ["s", "h", "d", "c"];
var upCards = ["2", "3", "4", "5", "6"];
var downCards = ["10", "j", "q", "k", "a"];

var suit = cardValue.substr(0, 1); //"c"
var card = cardValue.substr(1); //"10"

var count = 0;

if(upCards.indexOf(card) >= 0){
  count++; //postfix operator doesn't do what you think it does, see other answers
}
if(downCards.indexOf(card) >= 0){
  count--;
}
return count;

不,我不回答你的问题