我试图在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的值与第二个不同!这不像我正在改变它的原型。
你们能帮助我吗?
答案 0 :(得分: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]
,这是预期的结果。