如何使用此功能避免污染全局命名空间?

时间:2013-08-01 10:37:38

标签: javascript loops namespaces prompt

我正在努力创建一个循环的函数,直到给出匹配的答案,有没有更好的方法来做到这一点?我意识到我正在污染全局命名空间设置“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();

2 个答案:

答案 0 :(得分:3)

您没有通过声明变量var loopBoolean insdie您的函数来污染全局命名空间。

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

更好的重写方法是:

 while(prompt("type something").toLowerCase() != "gogo"){    
   // do sth if you need
 }
 alert("good answer!");

答案 1 :(得分:0)

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

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

Here is a working example