在没有赋值的情况下用var在JavaScript中声明变量会消耗内存吗
Does declaring a variable in JavaScript with var without assignment consume memory?
在对象的实例中,我喜欢使用闭包机制来模拟私有成员变量。对于潜在的大量创建的对象,我不需要一些私有成员,但我必须声明它们才能在闭包中使用,比如这里的"一"、"二"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将保持为空)。这是通过赋值操作执行的。赋值操作为变量提供一个值。
相关文章:
- 使用同一对象中的其他变量声明变量
- 如何将变量声明为全局变量
- 如何将变量声明为全局变量?用case foreach?Javascript
- 理解bootstrap.js变量声明
- 将 Javascript 变量声明为 PHP 形式
- 单个逗号分隔的变量声明和多个声明之间的区别是什么
- Do变量声明初始化函数
- Javascript变量声明:什么是“;var myVariable={}”;
- javascript中不同类型的变量声明
- 为什么在循环的Javascript中包含变量声明
- for 循环中必需的变量声明
- JavaScript 中的变量声明
- 在 Javascript 变量声明中使用逗号
- 你能在变量声明中添加条件吗?
- JavaScript 全局变量声明
- 节点.js变量声明和作用域
- 具有多个逗号分隔值的变量声明是什么意思(例如 var a = b,c,d;)
- 移动图像 ..JavaScript 将变量声明为字符串
- 让 javascript 将(默认情况下)未声明的变量声明到当前本地范围(基于首次使用)而不是全局范围
- 循环中的变量声明