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

Uncaught TypeError错误排查:无法设置undefined的属性'203'及代码问题

分析并修复「Uncaught TypeError: 无法设置undefined的属性'203'」错误

嘿,我来帮你拆解这个问题~你遇到的这个未捕获类型错误,核心原因是数组初始化错误加上索引逻辑异常,咱们一步步说:

错误原因

  1. 计数器count的类型错误:你把count声明成了空数组var count = [];,但它应该是一个数字类型的计数器,初始值为0。当你用数组作为数组索引时,JavaScript会把它隐式转换为字符串(空数组转成空字符串""),后续执行count++时,数组会被强制转为数字0再自增,这种类型混乱会导致索引处理异常,最终触发无法设置undefined属性的错误。
  2. 潜在的变量作用域问题:你用var声明循环变量i/j/k,在全局或函数作用域下会导致变量共享,虽然这不是直接引发当前错误的原因,但可能带来其他隐性bug。

修复后的代码

// 初始化11x11的三维空数组
var wins = [];
for (var i = 0; i < 11; i++) {
    wins[i] = [];
    for (var j = 0; j < 11; j++) {
        wins[i][j] = [];
    }
}

// 修复:将count初始化为数字0,作为计数器
var count = 0;

// 横向赢法
for (var i = 0; i < 11; i++) {
    for (var j = 0; j < 7; j++) {
        for (var k = 0; k < 5; k++) {
            wins[i][j + k][count] = true;
        }
        count++;
    }
}

// 纵向赢法
for (var i = 0; i < 11; i++) {
    for (var j = 0; j < 7; j++) {
        for (var k = 0; k < 5; k++) {
            wins[j + k][i][count] = true;
        }
        count++;
    }
}

// 斜向赢法(左上到右下)
for (var i = 0; i < 7; i++) {
    for (var j = 0; j < 7; j++) {
        for (var k = 0; k < 5; k++) {
            wins[i + k][j + k][count] = true;
        }
        count++;
    }
}

// 可以继续添加其他赢法逻辑...

如果你的环境支持ES6+,更推荐用let声明循环变量,避免变量作用域问题:

let wins = [];
for (let i = 0; i < 11; i++) {
    wins[i] = [];
    for (let j = 0; j < 11; j++) {
        wins[i][j] = [];
    }
}

let count = 0;

// 横向赢法
for (let i = 0; i < 11; i++) {
    for (let j = 0; j < 7; j++) {
        for (let k = 0; k < 5; k++) {
            wins[i][j + k][count] = true;
        }
        count++;
    }
}

// 纵向赢法
for (let i = 0; i < 11; i++) {
    for (let j = 0; j < 7; j++) {
        for (let k = 0; k < 5; k++) {
            wins[j + k][i][count] = true;
        }
        count++;
    }
}

// 斜向赢法(左上到右下)
for (let i = 0; i < 7; i++) {
    for (let j = 0; j < 7; j++) {
        for (let k = 0; k < 5; k++) {
            wins[i + k][j + k][count] = true;
        }
        count++;
    }
}

验证说明

修复后,count作为数字计数器正常递增,每次给wins的三维数组赋值时,都是对已初始化的二维数组元素(空数组)添加数字索引属性,不会出现undefined的情况,也就解决了类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:49:36