2013-08-01 37 views
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(); 

回答

3

你是不是通过声明变量var loopBoolean insdie你的函数污染全局命名空间。

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

一种更好的方式重写是:

while(prompt("type something").toLowerCase() != "gogo"){  
    // do sth if you need 
} 
alert("good answer!"); 
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

相关问题