2017-11-06 3 views
-1

ここでは、 'i'変数の上で閉じている関数を返して、クロージャを作成しています。私はそれらのいずれかを呼び出すクロージャー、値はどこに保存されていますか?

var newFunc = myFunc(); 
var newFunc2 = myFunc(); 

のような他の変数には、この機能を割り当てた場合

var myFunc = function(){ 
    var i = 0; 
    function increment(){ 
     return ++i; 
     console.log(i); 
    } 
    return increment 
} 

今私はvarの値格納されてきている

newFunc() // 1 
newFunc() // 2 
newFunc() // 3 
newFunc2() // 1 ?? 

になりますか? は、各関数の実行コンテキストに格納されているため、その関数を呼び出すときにのみ変更できます。

+2

*「var iの値はどこに保存されますか?」* myFuncを呼び出すたびに作成される環境では、 –

答えて

0

私はあなたが私は、変数のスコープは、私はその関数内にあるであろうことを意味している

myFunc 

内の変数を定義しました。したがって、この関数を呼び出すたびに、独自のiを作成します。

+0

'変数iのスコープはその関数内にあります.'その特定の関数呼び出しの中では、その関数の内部だけではありません。その関数への複数の呼び出しは、それぞれ独立したスコープで、互いに独立した複数の変数「i」を作成します。 – Thomas

+0

'function call'まったく!コメントしていただき、ありがとうございます。 – Youbent

関連する問題