命名自我调用功能

Nea*_*lbo 12 javascript self-invoking-function

是否有理由使用命名的自调用函数?

例如:

(function foo() 
{
     alert('Hello World! Named Self Invoking Function Here');
})();
Run Code Online (Sandbox Code Playgroud)

就我的学习而言,这与匿名自我调用函数相同,没有额外的优点(你不能在调用后再调用它),也没有额外的缺点,因为它没有"污染"全局范围(我认为).

有没有什么时候命名一个像上面这样的自调用函数是有意义的?

who*_*hat 11

如果你需要一个递归的自我调用函数,那么它可能有意义:

(function loop(i) {
    console.log(i);
    i++;
    if(i < 10) {
        loop(i);
    }
})(0);
Run Code Online (Sandbox Code Playgroud)


non*_*arn 8

我使用此模式定期轮询来自服务器的数据.这使得代码不那么混乱(尤其是setTimeout线条).

(function poll() {
  $.get("/somedata", function (data) {
    // Processing data...
    setTimeout(poll, 1000);
  });
})();
Run Code Online (Sandbox Code Playgroud)