I have a module pattern with a variable setting the currentPlayer to 1. I use a function expression to toggle that variable
const game = (() => {
let currentPlayer = 1;
const toggleCurrentPlayer = () => {
if (currentPlayer == 1){
currentPlayer = 2 ;
}
else {
currentPlayer = 1;
}
};
return {currentPlayer, toggleCurrentPlayer};
})();
If I run game.currentPlayer
it logs 1, I then run game.toggleCurrentPlayer()
, and it doesn't change currentPlayer
as intended, it still returns 1.
However, changing the toggleCurrentPlayer()
function using this
, seems to be able to change the variable successfully
function toggleCurrentPlayer(){
if (this.currentPlayer == 1){
this.currentPlayer=2;
}
else if (this.currentPlayer == 2){
this.currentPlayer=1;
}
};
I know function declarations and function expressions have different meanings for the keyword this
, but why would the toggleCurrentPlayer()
only work properly with the this
keyword and not be able to set the variable on its own?
Aucun commentaire:
Enregistrer un commentaire