javascript - 未捕获的类型错误 : Assignment to constant variable

标签 javascript

我的变量不是常量,但仍然收到错误:“未捕获类型错误:对常量变量进行赋值。”知道为什么吗?

蛇.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/

相关文章:

javascript - 具有固定标题和可扩展行的可滚动表格

javascript - 在等待的函数中使用 async 关键字进行回调有什么作用?

javascript - 可以使用for循环在jquery中创建 'else if'语句吗

javascript - 为什么我的 jQuery slidedown 在我的表中不起作用?

javascript - "The final argument passed to useEffect changed size between renders",但我不认为是这样?

javascript - jQuery 花式切换不工作

javascript - 调用 Javascript 函数后的括号是做什么用的?

javascript - 当使用 `jest.useFakeTimers()` 时,为什么 `setImmediate` 不会无限期超时?

javascript - 禁用单元格的按钮单击事件触发

javascript - JavaScript WebSocket.send 方法会阻塞吗?