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

Unexpected output while executing an IIFE in .js file

本文关键字:意外 输出 js 文件 执行 IIFE      更新时间:2023-09-26

我一直在浏览器中使用一个简单的HTML文档测试以下代码段,以获得类似 50 > EVEN NUMBER . 75 > ODD NUMBER . -1 > INVALID NUMBER .在 JavaScript 对话框中。但是,我只能看到最后一个对话框,而不是 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); 

您尝试递归调用find,但是当您调用find(number-2);时,您忘记return任何内容。因此,该函数返回undefinedswitch中的任何情况都不匹配。