作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在尝试用 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 的值与第二个不同!我并不是在改变它的原型(prototype)。
你们能帮我吗?
最佳答案
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]
,这是预期的结果。
关于javascript - 变量自行改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42874469/
我发现以下帖子非常有帮助: How to pickle yourself? 但是,此解决方案的局限性在于,重新加载类时,它不会以其“运行时”状态返回。即它将重新加载所有变量等以及类在转储时的一般状态.
我是一名优秀的程序员,十分优秀!