1

単純な目標があります。変数を増やしたいのですが、閉鎖の問題に直面しています。なぜこれがここで起こっているのかを読みましたJavaScriptクロージャーはどのように機能しますか?

しかし、私の問題の解決策が見つかりません:/

リンクから取得したコードのこの部分を想定してみましょう。

function say667() {
// Local variable that ends up within closure
var num = 666;
var sayAlert = function() { alert(num); //incrementation
}
num++;
return sayAlert;
}

関数内でnumをインクリメントし、numへの変更を維持したいと思います。

どうすればそれができますか?

ここに私の問題がある JsFiddle があります。totalSize をインクリメントして保持する方法がわかりません。

http://jsfiddle.net/knLbv/2/

クロージャーで終わるローカル変数は必要ありません。

4

3 に答える 3

2

totalSizeあなたのフィドルから、問題はクロージャー(ループの外側にある必要があります)とquery.exec非同期(これは some で確認できます)の混合であると思いますconsole.log

必要と思われるのは、async.reduceのようなある種の制御フローです。

于 2013-06-27T11:57:40.720 に答える
-1

他のすべての解決策が失敗した場合は、 num を配列var num = [666]にしてから、最初の要素をインクリメントします: num[0]++

于 2013-06-27T09:02:30.337 に答える