0

我经常看到 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();
4

1 回答 1

2

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

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

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

  • 它更冗长
  • 它将名称添加到全局(或本地)命名空间。

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

于 2013-02-25T19:51:08.643 回答