首页 > 解决方案 > “无法读取属性” [JS]

问题描述

再次,有很多问题和解决方案,但我似乎无法找到我的问题的答案。

  1. 目标:这是我的自定义垃圾编程语言的词法分析器。
  2. 预期:高级功能会改变值
    实际:不会。
  3. 错误:无法读取“未定义”的属性长度。

我尝试过的:
修复错误、更改功能代码、查找它。
!编辑:错误在第 87 行。
代码(一小段):

class Lexer {
    constructor(text) {
        this.text = text;
        this.pos = -1;
        this.current_char = 'None';
    }
    advance() {
        this.pos += 1;
        if (this.pos < this.text.length) { //this is line 87
            this.current_char = this.text[this.pos];
        } else {
            this.currenct_char = 'None';
        }
    }

问我是否需要更多代码。

标签: javascript

解决方案


当你实例化你的对象时,构造函数参数text是未定义的,所以this.text也是未定义的。您可能忘记了参数text或发送到构造函数的变量未定义。

因此,当您调用 method 时advance(),它无法访问属性长度,this.text.length因为this.text未定义。


推荐阅读