在不使用赋值的情况下使用var声明JavaScript中的变量会消耗内存吗?

时间:2012-01-07 11:56:56

标签: javascript

在对象的实例中,我喜欢使用闭包机制来模拟私有成员变量。对于潜在的大量创建对象,我不需要一些私有成员,但是我必须声明它们才能在闭包中使用它们,例如“one”,“two”和“three”:< / p>

    var obj=function()
    {
        var one;
        var two;
        var three;

        var M=function()
        {
            one=5;
        };
    };

(不要介意这实际上不是我的设置的一个有效例子,它只是为了演示使用M的三个变量的闭包。)

var语句本身是否已占用内存,或者这取决于实际为这些变量分配内容,例如“one”?

3 个答案:

答案 0 :(得分:7)

解释器必须存储有关范围的信息 - one = 5将更改局部变量one,而不是创建全局变量(例如four = 5会发生)。这些信息必须以某种方式耗费一些记忆。在为one分配值之前,此内存使用情况也适用,因为在您分配时必须提供信息。

由于每个口译员的不同,很难说会花多少钱。我想这还不够担心。

请注意,根本不使用two / three,在此示例中可能会进行垃圾回收。 (实际上,你也没有暴露M,因此在这个例子中,一切都可能被垃圾收集。)

答案 1 :(得分:5)

在声明变量而不为其赋值时,仍然需要一些可用的内存,否则您无法在程序中稍后对该变量进行引用。我不认为这是一个显着的内存使用量,并没有什么区别。

答案 2 :(得分:4)

声明变量时,会为其保留一个内存空间,并允许您使用为3个变量选择的名称存储或从该内存中检索。这样的空格是空的,直到你用一个值填充它(两个/树将保持为空)。这是通过赋值操作执行的。赋值操作为变量赋值。