在布尔变量之间切换

kyd*_*oco 2 javascript

我想知道如何在两个布尔变量之间切换.这在第一次运行代码时正常工作,但在第二次运行后输出不正确.

输出第一次运行switchPlayer():

player1.isActive = false,
player2.isActive = true
Run Code Online (Sandbox Code Playgroud)

输出第二次运行switchPlayer():

player1.isActive = true,
player2.isActive = true
Run Code Online (Sandbox Code Playgroud)

以下是我写的代码:

var Player = function(score, isActive){
  this.score = score;
  this.isActive = isActive;
}

Player.prototype.toggleIsActive = function(){
      if(this.isActive === false){
        this.isActive = true;
      } else{
        this.isActive = false;
      }
    }

function switchPlayer(){
  if(player1.isActive === true){
    player1.toggleIsActive();
    player2.toggleIsActive();
  } else{
    player1.isActive = true;
  }
}
var player1 = new Player("0", true);
var player2 = new Player("0", false);

switchPlayer();
switchPlayer();
Run Code Online (Sandbox Code Playgroud)

Ibu*_*Ibu 8

您可以像这样简化它:

Player.prototype.toggleIsActive = function(){
   this.isActive = !this.isActive;
}

function switchPlayer(){
    player1.toggleIsActive();
    player2.toggleIsActive();
}
Run Code Online (Sandbox Code Playgroud)

ToggleIsActive应该与以前的相反.另请注意,switchPlayer仅调用没有特定逻辑的切换.