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

Does declaring a variable in JavaScript with var without assignment consume memory?

本文关键字:变量 声明 内存 JavaScript 赋值 情况下 var      更新时间:2023-09-26

在对象的实例中,我喜欢使用闭包机制来模拟私有成员变量。对于潜在的大量创建的对象,我不需要一些私有成员,但我必须声明它们才能在闭包中使用,比如这里的"一"、"二"answers"三":

    var obj=function()
    {
        var one;
        var two;
        var three;
        var M=function()
        {
            one=5;
        };
    };

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

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

解释器必须存储有关作用域的信息-one = 5将更改局部变量one,而不是创建全局变量(例如four = 5)。这些信息一定要花费一些内存。在将值分配给one之前,这种内存使用情况也适用于,因为信息必须在分配时可用。

它将花费多少内存很难说,因为每个解释器的内存不同。我想这还不够担心。

注意,two/three根本没有被使用,并且在本示例中可能是垃圾收集的。(实际上,您也没有公开M,所以在本例中,所有内容都可能立即被垃圾收集。)

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

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