比较这两个代码 第一:
function initializeView() {}
function init() {
initializeView();
}
第二
function init() {
(function initializeView() {})();
}
如果只在init()中调用initializeView(),那么哪一个更好? (我认为他们做了同样的工作)
编辑: 我没有考虑全局命名空间,因为所有这些都在Class中。
var MyObject = (function() {
...
function init() {}
...
})();
答案 0 :(得分:2)
第一个使用不必要的变量污染全局命名空间,而第二个创建不必要的闭包和/或在init
的每次调用时创建一个额外的函数对象。
假设每initializeView
只调用init()
一次(正如您的IEFE建议的那样),最好只是内联代码。
如果您需要将其作为多次调用的函数,我建议
var init = (function() {
function initializeView() {}
return function init() {
…
initializeView();
…
};
}());