关于if函数中的if语句的问题 - 如果if语句返回true但函数返回false

时间:2011-05-31 06:14:49

标签: javascript function

我可以问你们一个问题吗? 以下是我的代码:

var num = 1;
var isNumberEqualOne = function(){
    if(num == 1){
      return true;
    }
    return false;
}();
alert(isNumberEqualOne);

在这段代码中,函数中的语句返回true,返回true后,函数中的代码仍在执行吗?所以最后,代码遇到返回false,为什么函数仍然返回true.Sorry for my bad english.Thanks

3 个答案:

答案 0 :(得分:7)

作为alex saidreturn函数立即将控制转移出函数调用;

中没有执行函数中的其他语句(finally块除外)

所以:

function foo(a) {
    if (a == 1) {
        alert("a is 1");
        return;
        alert("This never happens, it's 'dead code'");
    }
    alert("a is not 1");
}
foo(1); // alerts "a is 1" and nothing else
foo(2); // alerts "a is not 1"

关于我上面所说的“函数finally块除外)中没有其他语句执行”,更多关于{{1}块:

finally

请注意,无论执行如何离开function foo(a) { try { if (a == 3) { throw "a is e"; } if (a == 1) { alert("a is 1"); return; alert("This never happens, it's 'dead code'"); } alert("a is not 1"); } catch (e) { alert("exception: " + e); } finally { alert("finally!"); } } foo(1); // alerts "a is 1", then "finally!" foo(2); // alerts "a is not 1", then "finally!" foo(3); // alerts "exception: a is 3", then "finally!" 块,无论是自然地由于try/catch,还是由于return而提前,或者由于异常而提早,finally块中的代码1}}阻止总是运行。


偏离主题:另外,请注意,如果您要立即调用该函数表达式,则需要使用括号:

    var isNumberEqualOne = (function(){
//                         ^--- here
        if(num == 1){
           return true;
        }
        return false;
    })();
//   ^--- and here

或者您可以将()称为parens,如下所示:

    var isNumberEqualOne = (function(){
//                         ^--- here
        if(num == 1){
           return true;
        }
        return false;
    }());
//     ^--- and here

要么有效。

答案 1 :(得分:6)

return将暂停该功能并立即返回。函数中剩余的代码将执行。

在您的示例中,num被指定为1,因此您的函数内的条件为true。这意味着您的函数将返回到那里,然后使用true

您还可以重写该函数,使其正文为return (num == 1)

答案 2 :(得分:0)

当函数执行return语句时,它不会继续执行它后面出现的语句。因此,如果num == 1评估为true,则该函数将返回true

另请注意,您的警告语句未调用isNumberEqualOne函数。如果要调用函数,则应该alert(isNumberEqualOne())