假设我有一个功能foo,可以完成很多工作,并且声明了var bar并且只在开头使用。
var foo = function () {
var bar = 1;
$('#my-el').click(function () {
bar += 1;
});
//...do lots more work. bar is in scope, but no longer used.
};
正如您所看到的,"点击"处理程序引用条,因此无论foo的剩余内容如何,bar都将保留在内存中。但是,bar仍然在foo的剩余部分范围内。我想知道的是,使用立即调用的函数表达式来限制条形范围是否有任何性能优势,如下所示。
var foo = function () {
(function () {
var bar = 1;
$('#my-el').click(function () {
bar += 1;
});
}());
//...do lots more work. bar is out of scope.
};
假设使用立即调用的函数表达式的开销与foo的总执行时间相比可以忽略不计,那么保持" bar"超出余下的范围以某种方式提高性能?我只关心这里的表现,而不是变更命名冲突或相关问题。