Javascript 声明的函数不工作
当我将我的Javascript 声明的函数不工作,javascript,jquery,Javascript,Jquery,当我将我的switchTurns函数作为如下函数编写时,它不起作用: function switchTurns (player){ if (player == 'X'){ player = 'O'; } else { player = 'X'; } } 但是,当我只写声明中的内容时,它是有效的: if (player == 'X'){ player = 'O'; } else { player = 'X'; } 这就是我使用它的地方:(当我使用注释部分时,
switchTurns
函数作为如下函数编写时,它不起作用:
function switchTurns (player){
if (player == 'X'){
player = 'O';
} else {
player = 'X';
}
}
但是,当我只写声明中的内容时,它是有效的:
if (player == 'X'){
player = 'O';
} else {
player = 'X';
}
这就是我使用它的地方:(当我使用注释部分时,它起作用)
如何使函数工作?您正在更改一个变量,该变量是您调用的函数的局部变量,player。因此,当您在函数中调用它时,它会更改播放器,但一旦您离开函数,该值就会被丢弃。当您在outer方法中调用它时,实际上是在更改变量turn。您需要在switchTurns函数中将值设置为turn,而不是player Jquery
var turn = 'X';
var against = "Mobile";
$('.xo-btns').click(function(){
if (against != 'PC'){
// show(this, turn, board);
// someoneWon(board);
switchTurns (turn);
console.log(turn);
}
});
function switchTurns (player){
if (player == 'X'){
turn = 'O';
} else {
turn = 'X';
}
}
这是一个工作示例:您需要返回更改后的值,并在调用函数中捕获该值,您可以使用
player=player=='X'?'O':'X'代码>(而不是完整的if/else结构)。@karthikr如何捕获它?@nnnnnn我知道,但我有点想用它来做一个函数。是的,但即使在函数中,你也可以返回player=='X'?'O':'X'
。有没有办法调用变量turn?在我看来,您应该使用闭包(并且一定要查看javascript的作用域规则,它们将在很多方面有所帮助)。这里有一个这样做的例子:谢谢,我一定会检查范围规则。如果传递的值只是globalturn
变量,并且函数更新相同的全局变量,那么将player
作为参数传递实际上没有任何意义。
var turn = 'X';
var against = "Mobile";
$('.xo-btns').click(function(){
if (against != 'PC'){
// show(this, turn, board);
// someoneWon(board);
switchTurns (turn);
console.log(turn);
}
});
function switchTurns (player){
if (player == 'X'){
turn = 'O';
} else {
turn = 'X';
}
}