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