我希望在每个switch语句的情况下都有一个变量跟踪if
语句的结果。问题是每次我的情况使用变量的初始值 - 0,而不是前一种情况给出的值,所以我总是得到myNum = 1
。我想知道这个问题的常见解决方案是什么。
我还尝试使用数组var myArray = [false,false,false,false];
,其中案例1更改myArray[0] = true
,当案例2中的if
语句返回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
答案 0 :(得分:0)
每次调用myNum
函数时,clickItem
变量都设置为0。它无法超过1。
您应该做的是以$scope
这样设置一个全局变量:
$scope.myNum = 0;
$scope.clickItem = function(result){
function addNum() {
$scope.myNum++;
};
...
};
不要忘记更改记录结果的方式:
console.log("myNum is" + $scope.myNum);