0

如果我将一个自执行的 JavaScript 函数放在一个“普通”函数中,它什么时候执行?

function normalFunction() {
    var a = 1;

    (function() {
        var b = 2;
        var c = 3;
    })();

    var d = 4;
}
4

2 回答 2

2

自执行函数的放置位置与它的执行方式几乎没有关系。此函数将创建 2 个具有初始值的局部变量,退出并且不会对封闭函数范围产生影响(除了浪费 CPU 周期)

于 2013-04-04T14:46:01.573 回答
2

仅当您调用时才会调用IIFE normalFunction。即使函数块将在加载时解析,调用也不会发生,直到封闭函数运行,然后 IIFE 被空参数块调用 -()

这几乎与您编写时会发生的情况相同:

function normalFunction() {
    var tmp = function() {
        ...
    };

    tmp();
}

其中显然tmp()只发生在调用封闭函数期间。

于 2013-04-04T14:46:13.293 回答