2017-03-18 49 views
1

我有一个小问题试图编写一个在js中的蛇游戏。变量本身的变化

我有这样的功能:

function move() { 

    var aux = []; 
    aux = snake.position[snake.position.length - 1]; 
    console.log(aux); 

    if (snake.direction == 'r') { 
     snake.position[snake.position.length - 1][1] += 1; 
    }; 

    console.log(aux); 
    //updateSnake(); 
    snake.position[snake.position.length - 2] = aux; 
    updatePosition(snake.position); 
}; 

的问题是,AUX是改变本身没有我做任何它,你可以看到。第一个console.log的值与第二个不同!这不像我正在改变它的原型。

你们能帮我吗?

+2

难道你只是改变了snake.position [someindex]吗? – Zackline

+0

好吧,是的!但事情是。我第一次记录这个aux时,会打印出我[10,12] - snake.position [2]的值。之后,如果,辅的价值变为[10,13]。但我不会在任何地方改变这个辅助。只有snake.position [2]发生变化.Aux不应该 –

+0

请创建一个[Minimal,Complete和Verifiable示例](https://stackoverflow.com/help/mcve)。 –

回答

0
if (snake.direction == 'r') { 
    snake.position[snake.position.length - 1][1] += 1; 
} 

上述行是什么改变了数组aux。正如上面的评论所述,第一个console.log()返回[10,12]。之后,if语句正在递增snake.position[snake.position.length - 1][1],这是变量的值。当第二次呼叫console.log()时,变量aux被评估为[10,12+1],相当于[10,13],这是预期的结果。