在IIFE上使用命名函数是否有优势?

时间:2013-02-25 19:49:43

标签: javascript function iife

我一直看到IIFE。

我看到一系列陈述未公开,即它们没有用括号括起来。

为什么我没有看到函数后跟其调用

    // lib code...we are inside an IIFE 

    function fooName () {
    }
    fooName();

    // lib code...

在不需要闭包时立即调用一系列语句,即你不需要持久或静态局部变量?

这个习语/模式有问题吗?它有名字吗?是用过吗?

非“小”代码

function manageGlobal() {
    if (win.$A && win.$A.cg) {
        $A.extend($A, window.$A);
    } else if (window.$A) {
        $A_previous = window.$A;
    } else {
        $A = window.$A = {};
    }
}
manageGlobal();

1 个答案:

答案 0 :(得分:2)

这只是一个函数声明,然后是它的调用。

它没有名称,因为它有没有特异性:它只是语言的基本显而易见的使用。

顺便说一句,它没有IIFE的优势:

  • 这是更详细的
  • 它为全局(或本地)命名空间添加名称。

如果您不需要关闭,并且不需要避免命名空间污染,因为您在一个小的IIFE中,那么您可以直接包含您的函数中的代码而不是声明它。