【问题标题】:Uncaught TypeError: Cannot read property 'Array' of undefined error in JS未捕获的类型错误:无法读取 JS 中未定义错误的属性“数组”
【发布时间】:2020-03-25 23:20:00
【问题描述】:

我正在制作一个非常简单的 AI,这是我的第一个 AI,当为权重数组生成随机数的函数时,我不断收到错误消息。这段代码只是为了测试它是否正常工作 错误日志:

未捕获的类型错误:无法读取未定义行的属性“权重”:9 var weight = new Array[];

这是整个代码,因为显然我必须发布所有代码,而不是堆栈溢出建议的最小值:

class preseptron {
  constructor(weights, inputs) {
    this.weights = new Array();
    this.inputs = new Array(inputs);
    this.output;

    function preseptron() {
      for (var i = 0; i < 15;) {
        this.weights[i].push(Math.random(-1, 1));
        i++
      }
    }

    function sum() {
      var sum = 0
      for (var j = 0; j < this.weights.length;) {
        sum += inputs[j] * weights[j];
      }
      var output = Math.sin(sum)
      if (output > 0) {
        output = 1;
      }
      if (output < 0) {
        output = -1;
        return output;
      }
    }
    preseptron()
    sum()
    document.write(output);
  }
}
var test = new preseptron(15, 15);

【问题讨论】:

  • 由于某种原因,我不允许在函数中发布带有 for 循环的代码
  • 你在哪里定义了你的权重数组?
  • 定义数组var weights = [];
  • 错误信息引用了代码的第 9 行...您没有向我们展示。
  • 不清楚的地方见谅

标签: javascript artificial-intelligence


【解决方案1】:

您试图从不同的函数范围而不是基类范围中获取weight。只需将它们替换为使用不重新定义 thisarrow functions 或将 weight 设置为变量即可解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 2017-07-26
    相关资源
    最近更新 更多