0

我正在尝试创建一个循环直到给出匹配答案的函数,有没有更好的方法来做到这一点?我意识到我正在污染全局命名空间设置“loopBoolean = false/true”!

function userPrompt() {
    var loopBoolean = true;
    while(loopBoolean){
        var userChoice = prompt("type something").toLowerCase();
        if(userChoice === "gogo"){
            alert("good answer!");
            loopBoolean = false;
        }
        else{
            loopBoolean = true;
        }
    }
}
userPrompt();
4

2 回答 2

3

您不会通过var loopBoolean在函数中声明变量 insdie 来污染全局命名空间。

问题是如果您不使用var关键字。

更好的重写方法是:

 while(prompt("type something").toLowerCase() != "gogo"){    
   // do sth if you need
 }
 alert("good answer!");
于 2013-08-01T10:40:09.010 回答
0

不知道为什么你会因为loopBoolean只是一个函数范围变量而如此烦恼,但你可以用它break;来结束循环,这使得代码更短且更具可读性......

function userPrompt() {
    while(true){
        var userChoice = prompt("type something").toLowerCase();
        if(userChoice === "gogo"){
            alert("good answer!");
            break;
        }
    }
}
userPrompt();

这是一个工作示例

于 2013-08-01T10:40:01.977 回答