还有很多问题和解决方案,但我似乎找不到问题的答案。
- 目标:这是我的自定义垃圾编程语言的lexer
- 预期:advance函数将更改值
实际:不会 - 错误:无法读取"undefined"的属性长度
我尝试过的:
修复错误,更改函数代码,查找它。
!编辑:错误在第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';
}
}
问我是否需要更多代码。
实例化对象时,构造函数参数text
未定义,因此this.text
也未定义。您可能忘记了参数text
,或者变量send-to-constructor未定义。
因此,当您调用方法advance()
时,它无法访问this.text.length
上的属性长度,因为this.text
是未定义的。