回调函数和while循环问题

时间:2015-09-24 16:37:33

标签: javascript

var game = {
    setPlayerNum: function(){
        var num = parseInt(prompt("Enter Number of Players"));
        this.setPlayerName();
    },

    setPlayerName: function(){
        if (num == 2){
            do {
                var playerOne = prompt("Enter Your Name");
                } while(true){
                var playerTwo = prompt("Enter Your Name");
                break;
            }
        }

    },

    boardInitialize: function(){

    },

    boardInitializeView: function(){

    },

}

我有两个带对象的函数。第一个函数运行正常,但回调函数没有运行。我不知道为什么

2 个答案:

答案 0 :(得分:0)

有几件事。范围问题,以及不必要且格式错误的while循环。试试这个:



var game = {

    num: 0,
    playerOne: '',
    playerTwo: '',

    setPlayerNum: function(){
        this.num = parseInt(prompt("Enter Number of Players"));
        this.setPlayerName();
    },

    setPlayerName: function(){

        this.playerOne = prompt("Enter Your Name");
        
        if (this.num == 2){

            this.playerTwo = prompt("Enter Your Name");
            
        }
    }
}

game.setPlayerNum();




更详细地解释范围问题:您最初在num方法中声明的setPlayerNum变量不可用于该范围之外的其他方法。通过首先声明num变量,作为对象的一部分,您可以引用它。我对您的playerOneplayerTwo变量做了同样的事情。

但是你可能会发现重新安排脚本会更好一点,这样你就可以拥有任意数量的玩家:



var game = {

  playerNames: [],

  setPlayerNum: function(){
    
    var num = parseInt(prompt("Enter Number of Players"));
    
    for (var i = 0; i < num; i++) {
      
      this.setPlayerName(i + 1);
      
    }
  },

  setPlayerName: function(num){

    this.playerNames.push( prompt("Enter Your Name For Player " + num) );

  }
}

game.setPlayerNum();
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这不是do / while statament的语法。你不能在一段时间后打开一个范围,你应该用&#34 ;;&#34;结束do / while语句。 检查一下

http://www.w3schools.com/jsref/jsref_dowhile.asp

我不明白你想要做什么,但我猜测do / while不是必要的。你可以这样做:

function() {
    var playerOne = prompt("Enter Your Name");
    if (this.num == 2){
        var playerTwo = prompt("Enter Your Name");
    }
}