0

首先比较这两个代码:

function initializeView() {}
function init() {
    initializeView();
}

第二:

function init() {
    (function initializeView() {})();
}

如果 initializeView() 仅在 init() 内部调用,那么哪个更好?(我认为他们做了同样的工作)

编辑:首先我没有考虑全局命名空间,因为它们都在类中。

var MyObject = (function() {
    ...
    function init() {}
    ...
})();
4

1 回答 1

2

第一个使用不必要的变量污染全局命名空间,而第二个创建不必要的闭包和/或在每次调用init.

假设initializeView每次只调用一次init()(正如您的 IEFE 建议的那样),最好简单地内联代码。

如果您需要它作为多次调用的函数,我建议

var init = (function() {
    function initializeView() {}
    return function init() {
        …
        initializeView();
        …
    };
}());
于 2013-09-23T20:13:29.067 回答