在switch语句的情况下,将if语句中的值存储在变量中

Store value in variable from an if statement within a switch statement case

本文关键字:语句 存储 变量 switch 情况下 if      更新时间:2023-09-26

我想让一个变量在每一个switch语句的情况下跟踪if语句的结果。问题是每次我用变量的初始值- 0,而不是前一个例子给出的值,所以我总是得到myNum = 1。我想知道解决这个问题的一般方法是什么。

我还尝试了一个数组var myArray = [false,false,false,false];,其中情况1改变了myArray[0] = true,当if语句在情况2返回true时,它改变了myArray[1] = true,但是整个数组现在是[false,true,false,false],即从情况1的变化没有保存在变量中,而是使用初始变量值。

如果我在switch语句之外将值记录到控制台,这两种情况是相同的。

$scope.clickItem = function(result){
var myNum = 0;
function addNum() {
  myNum++;
};
switch(currentString) {
    case string1:
    if($scope.img1 === result){
         addNum();
         console.log('myNum is ' + myNum); // <- It's 1
         $scope.currentString = $scope.val2;
     }
     else{
         console.log("Wrong..");
     }
    break;
    case $scope.val2:
    if($scope.img2 === result){
        addNum();
        console.log('myNum is ' + myNum); // <- It's 1 again, when it should be 2.
        $scope.currentString = $scope.val3;
     }
     else{
         console.log("Wrong..");
     }
    break;
    case $scope.val3:
    if($scope.img3 === result){
         addNum();
         $scope.currentString = $scope.val4;
     }
     else{
    console.log("Wrong..");
}
break;
}
...etc

每次调用clickItem函数时,将myNum变量设置为0。1.

你应该做的是在你的$scope中设置一个全局变量:

$scope.myNum = 0;
$scope.clickItem = function(result){
    function addNum() {
        $scope.myNum++;
    };
    ...
};

不要忘记更改记录结果的方式:

console.log("myNum is" + $scope.myNum);