2011-12-15 25 views
2

的我在JavaScript中下面的代碼:範圍的問題 - 退出了環

var continueloop = true; 

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

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

主要功能裏面continueloop的值設置爲false不會導致while循環停止。我懷疑它可能與javascript的函數範圍有關,但我可能會誤解某人可能會向我解釋爲了使用main()函數範圍可訪問的continueloop變量獲得所需效果,我必須更改哪些內容?

謝謝!

+0

這段代碼是在一個函數內,還是`main`和`continueloop`全局?你能告訴我們這些函數/變量是在哪裏聲明的。因爲它適用於我:http://jsfiddle.net/Dc26x/ – 2011-12-15 21:33:28

回答

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();