2016-03-19 16 views
-2

を生命維持を実行しながら、私はJavaScriptのダイアログボックスで 50 > EVEN NUMBER . 75 > ODD NUMBER . -1 > INVALID NUMBER .のような出力を得るために、私のブラウザで簡単なHTML文書に次のコードをテストしてきました。 しかし、私は3つの別々のダイアログボックスではなく最後のものだけを見るようになりました。このようなことが起こっている理由を知りたいと思っています。予期しない出力.jsファイルに

function isEven(X) { 
    var number = X; 
    var sol = (function find(number) { 
        if(number === 0) { 
         return 'Even'; 
        } else if(number === 1) { 
         return 'Odd'; 
        } else if(number > 1) { 
         find(number-2); 
        } else if(number < 0) { 
         return 'Invalid'; 
        } 
       }(number)); 

    switch(sol) { 
     case 'Even': 
      alert(number+' is an '+'EVEN NUMBER .'); 
      break; 
     case 'Odd': 
      alert(number+' is an '+'ODD NUMBER .'); 
      break; 
     case 'Invalid': 
      alert(number+' is an '+'INVALID NUMBER .'); 
      break; 
    } 
} 

isEven(50); 
isEven(75); 
isEven(-1); 
+0

デバッグに 'alert()'の代わりに 'console.log()'を使います。 –

+0

デバッガでプログラムロジックをトレースします。 –

答えて

1

あなたは再帰的にfindを呼び出そうとしているが、あなたが呼び出すときfind(number-2);あなたはreturn何にでも忘れていました。その結果、この関数はswitchのいずれの場合も一致しないundefinedを返します。

+0

Eee ...うん...あなたは正しい。私はそれを念頭に置いていたはずです。ありがとうクエンティン! –

関連する問題