调用函数时变量不变

use*_*079 0 javascript variables

有人看到我的代码中的一个错误,阻止变量"player1Bananas"改变?功能中的其他所有功能都可以正常工作

 //update playerStats arguments:
    //banana is a banana object
    //x and y are the banana's position
    //players bananas is player1Bananas or player2Bananas,
    //ballPosition is "left" or "right"
    updatePlayerStats: function(banana, x, y, playersBananas, ballPosition) {   
        playersBananas += 1;
        gameController.bananasTaken += 1;
        banana.x = x;
        banana.y = y;
        gameController.player1Score = 0;
        gameController.player2Score = 0;
        gameController.setUpPaddles();
        gameController.setUpBall(ballPosition);
    },
    gameController.updatePlayerStats( gameController.Banana1, 20, gameController.canvas.height - 20 - gameController.Banana1.height,
 gameController.player1Bananas, "left");
Run Code Online (Sandbox Code Playgroud)

谢谢!

Jar*_*red 5

你传递的价值gameController.player1bananas作为参数的函数.

在函数中,该值分配给局部变量playersBananas并受范围限制.当您对其进行更改时,您不再对最初传递的变量进行更改,而是更改新变量playersBananas.

示例:http://jsfiddle.net/GHkJ6/

要解决此问题,您需要将其作为对象传递.JavaScript不会将其作为值传递,而是将对象本身传递给它.

示例:http://jsfiddle.net/F446Q/