2

我记得:
C++:

for(int i= 0; i< 100;i++)
{
   int number= 3; 
}

我们将有 100 个不同的同名实例变量(但仅作为一个变量占用 100 倍内存。),但 C++ 中的变量是块作用域,因此这 100 个变量将在循环结束时被回收。
与 Javascript 相比:
JS:

for(var i=0; i < 100 ;i++)
{
    var number= 3;
}
  1. 它会产生 100 个不同的变量吗?或者我们只有一个名为 number 的变量,其值为3
    我的意思是这些变量实际花费了多少内存?

  2. 如果 for 循环没有被 a 包裹function(){},那么回收提供变量的内存的机制是什么?

  3. 好的,这是针对原始类型变量的。如果变量是对象,会有所不同吗?

4

1 回答 1

3

JavaScript 中的变量 - 与 C 不同 - 是函数范围的,因此您正在重用相同的变量:

  1. 仅创建一个变量。
  2. 如果它没有被包装在一个函数中,number它将是全局的,但仍然只会被创建一次。
  3. 价值观无关紧要。变量始终是函数范围的。
于 2013-04-14T04:48:47.083 回答