Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 声明的函数不工作_Javascript_Jquery - Fatal编程技术网

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的作用域规则,它们将在很多方面有所帮助)。这里有一个这样做的例子:谢谢,我一定会检查范围规则。如果传递的值只是global
turn
变量,并且函数更新相同的全局变量,那么将
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';
  }
}