有时当我需要一个静态变量时我会立即调用函数表达式(IIFE) - example1。
(function(){
var private_statik = 'hi',
publik = {};
return publik;
}())
其他时候我只是将它们作为属性添加到需要它们的函数 - example2。
function foo () {
}
foo.statik = 'hello';
例1是好的b.c.我得到了封装(隐私)的好处。实施例2是良好的b.c.它很简单,并且没有自我执行的开销。
还有其他事情需要考虑吗?
我具体的案例是换页器 - sFlipPage()
。我希望将所有DOM元素缓存在静态位置,以便它们在每次调用时都可用,并且每次调用该函数时都不必从DOM中提取它们。
谢谢!
答案 0 :(得分:0)
主要区别在于隐私和执行顺序。使用IIFE,您可以将静态变量设为私有。使用普通功能你不能。为了鼓励良好的OO设计(封装),我建议默认使用IIFE。
权衡是,不仅在需要特定对象时立即调用IIFE。