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

Wol*_*gel 8 javascript

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

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

        var M=function()
        {
            one=5;
        };
    };
Run Code Online (Sandbox Code Playgroud)

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

var语句本身是否已经消耗了内存,或者这取决于实际为这些变量分配一些东西,比如"one"?

pim*_*vdb 7

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

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

请注意,根本不使用two/ three,在此示例中可能是垃圾回收.(实际上,你也没有暴露M,所以在这个例子中,所有东西都可能被垃圾收集.)


Tin*_*can 5

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