You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt3 script setup中函数if块访问顶部声明变量报错求助

报错原因
  • script setup是Nuxt3/Vue3的编译期语法,该作用域下声明的普通函数没有绑定组件实例,this为undefined,第89行代码访问this.max相当于访问undefined的max属性,直接触发运行错误。你误以为是around自增报错,实际上代码执行到第89行的console.log时就已经抛出异常,还没运行到around++的逻辑。
  • 右上角方向的边界判断逻辑完全错误:你写的y < 0 && x > max本身就不可能满足合法索引要求,即使进入判断逻辑,访问grid[y - 1]也必然是undefined,继续访问索引属性就会触发「Cannot read properties of undefined (reading '1')」的报错。
  • 所有grid数组的访问都没有做层级安全校验,只要某一层索引超出范围返回undefined,后续的属性访问都会直接报错。
解决方案
  1. 修复第89行的错误调用
    删除this前缀,直接访问函数内声明的局部变量max即可:
// 修改前
console.log({max: this.max});
// 修改后
console.log({max});
  1. 修正右上角方向的判断逻辑
    将逻辑反转成合法的边界判断,同时加上可选链做安全访问:
// 修改前
if (y < 0 && x > max && grid[y - 1][x + 1].bomb) {
// 修改后
if (y > 0 && x < max && grid[y - 1]?.[x + 1]?.bomb) {
  1. 全量替换所有grid访问为可选链写法,避免层级undefined报错,示例如下:
// 原写法
if (y > 0 && grid[y - 1][x].bomb) {
// 替换后
if (y > 0 && grid[y - 1]?.[x]?.bomb) {

所有涉及grid[索引][索引].属性的写法都按照上述规则修改即可。

内容的提问来源于stack exchange,提问作者radmacher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:45:00