【问题标题】:How do i avoid polluting global namespace with this function?如何避免使用此功能污染全局命名空间?
【发布时间】:2013-08-01 10:37:38
【问题描述】:

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

【问题讨论】:

    标签: javascript loops namespaces prompt


    【解决方案1】:

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

    如果您没有使用 var 关键字,就会出现问题。

    更好的重写方法是:

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

    【讨论】:

      【解决方案2】:

      不知道你为什么这么烦恼,因为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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-04
        • 2011-05-14
        • 2015-03-05
        • 2014-04-25
        • 2016-03-10
        • 1970-01-01
        • 1970-01-01
        • 2020-01-03
        相关资源
        最近更新 更多