我的变量不是常量,但仍然收到错误:“未捕获类型错误:对常量变量进行赋值。”知道为什么吗?
蛇.js
export let SNAKE_SPEED = 3;
食物.js
import { snakeBody, SNAKE_SPEED } from "./snake.js";
export function update() {
let head = snakeBody[0];
if (head.x == food.x && head.y == food.y) {
food.x = Math.round(Math.random() * 21);
food.y = Math.round(Math.random() * 21);
SNAKE_SPEED++;
}
}
相关变量是 SNAKE_SPEED。
最佳答案
从其他模块导入的标识符无法重新分配。要实现这样的目标,您可以让其他模块导出一个更改它的函数,例如:
export let SNAKE_SPEED = 3;
export const changeSnakeSpeed = newSpeed => SNAKE_SPEED = newSpeed;
import { snakeBody, SNAKE_SPEED, changeSnakeSpeed } from "./snake.js";
然后调用changeSnakeSpeed(SNAKE_SPEED + 1)
,SNAKE_SPEED
将会改变。
或者做类似的事情
export const incrementSnakeSpeed = () => SNAKE_SPEED++;
incrementSnakeSpeed();
或者将经常更改的变量放入可以变异的单个对象中(或者重新分配并再次检索,如果您更喜欢不变性)。
关于javascript - 未捕获的类型错误 : Assignment to constant variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68659291/