switchステートメントのすべてのケースで、if
ステートメントの結果を変数に記録したいとします。問題は私のケースで変数の初期値 - 0を使用するたびに、前のケースで与えられた値ではないので、私はいつもmyNum = 1
になります。私はこの問題に対する共通の解決策が何であるかを知りたい。switchステートメント内のifステートメントの変数に値を格納する場合
Iはまた、2つの戻りtrue
それはケース1からの変更、すなわち、しかし全体のアレイが、今[false,true,false,false]
ある、myArray[1] = true
変化が変数に保存されていない場合には、アレイケース1はmyArray[0] = true
を変更var myArray = [false,false,false,false];
、if
ステートメントでこれを試みました代わりに初期変数値を使用しています。
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
私は大ファンではありませんが、可変変数をグローバルにすることで、アプリの開始時に初期化され、必要になるたびにインクリメントされるようにすることができます。 –
「myNum」はグローバルなので、その値は保持する必要がありますが、表示されていない関数内のローカル変数の場合は、内部の関数が実行されるたびにリセットされます。これは、上記のコードを含む関数と同じスコープレベルで 'myNum'を宣言することによって行われます。あなたの質問を[編集して] [最小で完全で検証可能な例](http://stackoverflow.com/help/mcve)を提供してください。 – nnnnnn
あなたは完全なコードを提供していないので、私はちょうど、ループから* myNum *を設定する必要があると思います。今度は、それぞれの変数をリセットします。また、関数* addNum()*をループ外に移動します。 –