2011-12-15 13 views
2

の外に出て行く:スコープの問題 - 私はJavaScriptで次のコードを持っているループ

var continueloop = true; 

while (continueloop === true) { 
    main() 
} 

function main() { 
    //do some stuff here 
    continueloop = false; 
} 

メイン関数内でfalseにcontinueloopの値を設定すると、whileループを停止することはありません。 。私はそれがjavascriptの関数スコープと関係があるかもしれないと思うが、私は間違っている可能性がありますmainel()関数の範囲にアクセス可能なcontinueloop変数で希望の効果を得るために私は何を変更する必要が私に説明することができますか?

ありがとうございました!

+0

このコードは関数内にあるのですか、あるいは 'main'と' continueeloop'グローバルの両方ですか?これらの関数/変数が宣言されている場所を教えてください。それは私のためにうまく動作するので:http://jsfiddle.net/Dc26x/ –

答えて

5

継続する必要があるのはなぜでしょうか?それはよりクリーンで、スコープの問題にも遭遇しません。

var continueloop = true; 

while (continueloop === true) { 
    continueloop = main(); 
} 

function main() { 
    //do some stuff here 
    return false; 
} 

// or 
while(main()); 
0

また、継続ループ条件が満たされている場合、再帰的にmain()を呼び出すこともできます。
アプリケーションによっては、continueloopをmain()にローカルにすることができます。

function main() { 
    var continueloop = false; 
    if (continueloop == true) { 
     main(); 
    } 
} 

main();