簡體   English   中英

在布爾變量之間切換

[英]Toggling between Boolean variable

我想知道如何在兩個布爾變量之間切換。 這在第一次運行代碼時正常工作,但在第二次運行后輸出不正確。

輸出第一次運行switchPlayer():

player1.isActive = false,
player2.isActive = true

輸出第二次運行switchPlayer():

player1.isActive = true,
player2.isActive = true

以下是我寫的代碼:

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

您可以像這樣簡化它:

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

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

ToggleIsActive應該與以前的相反。 另請注意,switchPlayer僅調用沒有特定邏輯的切換。

您可以通過從switchPlayer()實現中刪除if/else來實現此switchPlayer()

function switchPlayer(){

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

}

另外,考慮在Player原型上簡化你的toggleIsActive()方法,如下所示:

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

這是一個完整的例子:

 var Player = function(score, isActive){ this.score = score; this.isActive = isActive; } Player.prototype.toggleIsActive = function(){ this.isActive = !this.isActive; } function switchPlayer(){ player1.toggleIsActive(); player2.toggleIsActive(); } var player1 = new Player("0", true); var player2 = new Player("0", false); 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('----------------') 

 let player1 = {}; let player2 = {}; player1.isActive = false; player2.isActive = true; function toggle () { player1.isActive = !player1.isActive; player2.isActive = !player2.isActive; console.log('player1', player1.isActive, 'player2', player2.isActive); } 
 <button onclick="toggle()">Toggle</button> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM