如果我将一个自执行的 JavaScript 函数放在一个“普通”函数中,它什么时候执行?
function normalFunction() {
var a = 1;
(function() {
var b = 2;
var c = 3;
})();
var d = 4;
}
如果我将一个自执行的 JavaScript 函数放在一个“普通”函数中,它什么时候执行?
function normalFunction() {
var a = 1;
(function() {
var b = 2;
var c = 3;
})();
var d = 4;
}
自执行函数的放置位置与它的执行方式几乎没有关系。此函数将创建 2 个具有初始值的局部变量,退出并且不会对封闭函数范围产生影响(除了浪费 CPU 周期)
仅当您调用时才会调用IIFE normalFunction
。即使函数块将在加载时解析,调用也不会发生,直到封闭函数运行,然后 IIFE 被空参数块调用 -()
这几乎与您编写时会发生的情况相同:
function normalFunction() {
var tmp = function() {
...
};
tmp();
}
其中显然tmp()
只发生在调用封闭函数期间。