[英]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.