【发布时间】:2013-06-26 22:55:52
【问题描述】:
当我使用 JS 进行开发时,我经常面临使用内部函数(闭包)捕获变量和使用对象之间的选择。
内部函数:
var x = ...;
var f = function() {
// use x here
}
对象:
obj.x = ...;
obj.f = function() {
// use x here
}
内部函数方法“感觉”更自然,但我想知道 - 是否担心以一种或另一种方式执行它会影响性能,以及做这种事情最惯用的方式是什么?
【问题讨论】:
-
所以
x、f和obj会在某个本地范围内吗?请声明。如果没有,这个问题将只是关于命名空间。另外,如何访问第二个变体中的x? -
微优化几乎不值得担心。如果两种方法之间的唯一关注或区别是内存微管理,那么您应该使用您喜欢的任何方法。对我来说,使用闭包而不是在对象上放置属性通常有明确的理由。内存从来都不是我决定使用哪种方法的一个因素,因为在 JavaScript 中管理内存的方式并不像在其他语言中那样。
-
如果你使用闭包,你会受到作用域的限制,所以你最终可能会在顶级作用域中得到许多闭包,并且所有函数都是该作用域的后代。使用对象方法,您可以更轻松地访问在其他范围中设置的值,这应该可以提高代码的模块化。当然,没有一种方法适合所有情况。在任何相当复杂的应用程序中,您很可能会同时使用这两种方法。
标签: javascript performance object closures