在对象的实例中,我喜欢使用闭包机制来模拟私有成员变量。对于潜在的大量创建对象,我不需要一些私有成员,但是我必须声明它们才能在闭包中使用它们,例如“one”,“two”和“three”:< / p>
var obj=function()
{
var one;
var two;
var three;
var M=function()
{
one=5;
};
};
(不要介意这实际上不是我的设置的一个有效例子,它只是为了演示使用M的三个变量的闭包。)
var语句本身是否已占用内存,或者这取决于实际为这些变量分配内容,例如“one”?
答案 0 :(得分:7)
解释器必须存储有关范围的信息 - one = 5
将更改局部变量one
,而不是创建全局变量(例如four = 5
会发生)。这些信息必须以某种方式耗费一些记忆。在为one
分配值之前,此内存使用情况也适用,因为在您分配时必须提供信息。
由于每个口译员的不同,很难说会花多少钱。我想这还不够担心。
请注意,根本不使用two
/ three
,在此示例中可能会进行垃圾回收。 (实际上,你也没有暴露M
,因此在这个例子中,一切都可能被垃圾收集。)
答案 1 :(得分:5)
在声明变量而不为其赋值时,仍然需要一些可用的内存,否则您无法在程序中稍后对该变量进行引用。我不认为这是一个显着的内存使用量,并没有什么区别。
答案 2 :(得分:4)
声明变量时,会为其保留一个内存空间,并允许您使用为3个变量选择的名称存储或从该内存中检索。这样的空格是空的,直到你用一个值填充它(两个/树将保持为空)。这是通过赋值操作执行的。赋值操作为变量赋值。