2

覚えている限り:
C++:

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

同じ名前の 100 個の個別のインスタンス変数がありますが (ただし、1 つの変数だけで 100 倍のメモリを占有します)、C++ の変数はブロック スコープであるため、ループが終了すると 100 個の変数がリサイクルされます。
Javascript とは対照的に:
JS:

for(var i=0; i < 100 ;i++)
{
    var number= 3;
}
  1. 100 個の個別の変数を生成しますか? または、値を持つ number と呼ばれる 1 つの var だけがあります3
    つまり、これらの変数が実際に消費するメモリの量は?

  2. for ループが a でラップされていない場合function(){}、変数を与えるメモリをリサイクルするメカニズムは何ですか?

  3. わかりました、それはプリミティブ型変数用です。変数がオブジェクトの場合はどうなるでしょうか?

4

1 に答える 1

3

JavaScript の変数は、C とは異なり、関数スコープであるため、同じ変数を再利用しています。

  1. 変数は 1 つだけ作成されます。
  2. 関数にラップされていない場合、numberグローバルになりますが、作成されるのは一度だけです。
  3. 値は関係ありません。変数は常に関数スコープです。
于 2013-04-14T04:48:47.083 に答える