Javascript 在布尔变量之间切换

Javascript 在布尔变量之间切换,javascript,Javascript,我想知道如何在两个布尔变量之间切换。这在第一次运行代码时工作正常,但在第二次运行代码后,输出不正确 第一次运行switchPlayer()时输出: 第二次运行switchPlayer()时输出: 下面是我写的代码: var Player = function(score, isActive){ this.score = score; this.isActive = isActive; } Player.prototype.toggleIsActive = function(){

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

第一次运行switchPlayer()时输出:

第二次运行switchPlayer()时输出:

下面是我写的代码:

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();

您可以通过从
switchPlayer()
实现中删除
if/else
来实现这一点:

function switchPlayer(){

  player1.toggleIsActive();
  player2.toggleIsActive();

}

也可以考虑在<代码>播放器原型中简化< <代码> ToGGLISTAcIVE()/>代码>方法:

Player.prototype.toggleIsActive = function(){
   this.isActive = !this.isActive;
}
下面是一个完整的示例:
var Player=函数(分数,isActive){
这个分数=分数;
this.isActive=isActive;
}
Player.prototype.toggleIsActive=函数(){
this.isActive=!this.isActive;
}
函数switchPlayer(){
player1.toggleIsActive();
player2.toggleIsActive();
}
var player1=新玩家(“0”,真);
var player2=新玩家(“0”,错误);
console.log('player1.isActive',player1.isActive)
console.log('player2.isActive',player2.isActive)
console.log('----------------------')
switchPlayer();
console.log('player1.isActive',player1.isActive)
console.log('player2.isActive',player2.isActive)
console.log('----------------------')
switchPlayer();
console.log('player1.isActive',player1.isActive)
console.log('player2.isActive',player2.isActive)

console.log('--------------------')
您可以这样简化它:

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

function switchPlayer(){
    player1.toggleIsActive();
    player2.toggleIsActive();
}
ToggleIsActive应该与以前相反。还要注意的是,switchPlayer只调用toggle,没有特定的逻辑。

let player1={};
让player2={};
player1.isActive=false;
player2.isActive=true;
函数切换(){
player1.isActive=!player1.isActive;
player2.isActive=!player2.isActive;
console.log('player1',player1.isActive',player2',player2.isActive);
}

Toggle
只需为两名玩家调用Toggle函数即可。您不需要在
switchPlayer()
中进行额外的测试。尽管如此,我还是想知道为什么您没有看到代码的问题:如果您像现在这样查看
switchPlayer
,如果player 1处于活动状态,那么您正在做一件事,而在其他情况下则完全不同。难怪它不起作用。即使是一个完全的初学者,也应该意识到
player1.toggleIsActive();player2.toggleIsActive()
player1非常不同。isActive=true此外,如果要在真与假之间切换,请使用
myValue=!myValue
——这将使真变假,或将假变真。
Player.prototype.toggleIsActive = function(){
   this.isActive = !this.isActive;
}
Player.prototype.toggleIsActive = function(){
   this.isActive = !this.isActive;
}

function switchPlayer(){
    player1.toggleIsActive();
    player2.toggleIsActive();
}