在.js文件中执行IIFE时出现意外输出

时间:2016-03-19 11:17:52

标签: javascript function

我在浏览器中使用简单的HTML文档测试了以下代码,以获得类似的输出 50 > EVEN NUMBER . 75 > ODD NUMBER . JavaScript对话框中的-1 > INVALID NUMBER .。 但是,我只看到最后一个而不是3个单独的对话框。我很想知道为什么会发生这样的事情。

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); 

1 个答案:

答案 0 :(得分:1)

您试图以递归方式拨打find,但是当您拨打find(number-2);时,您忘记了return任何内容。因此,该函数返回undefined,它不会与switch中的任何案例匹配。