范围问题 - 退出循环

时间:2011-12-15 21:25:58

标签: javascript scope

我在javascript中有以下代码:

var continueloop = true;

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

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

在main函数内将continueloop的值设置为false不会导致while循环停止。我怀疑它可能与javascript的函数范围有关,但我可能会错误的是,有人可以向我解释我必须要改变什么才能获得main()函数范围可访问的continueloop变量所需的效果?

谢谢!

2 个答案:

答案 0 :(得分:5)

如果它继续下去,你为什么不回来?它更清洁,你也不会遇到任何范围问题。

var continueloop = true;

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

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

// or
while(main());

答案 1 :(得分:0)

如果满足continueloop条件,另一种选择是递归调用main() 根据您的应用程序,这可能允许您将continueloop本地保持为main()。

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

main();