"cannot return length of undefined"的具体案例



我正在编写这个程序,它循环遍历数组并返回数组中每个元素中的每个字符。数组中的元素是常规英语行。下面是我当前的代码:

(我使用javascript btw)

let array = ["this", "does", "not", "work"]
var current_pos_in_line = -1
var current_line = 0
var current_char
function advance() {
current_pos_in_line += 1
if (current_pos_in_line < array[current_line].length) {
current_char = array[current_line][current_pos_in_line]
return current_char
} else {
current_char = null
newline()
}
}
function newline() {
current_line += 1
current_pos_in_line = -1
advance()

}
for (some_condition) {
advance()
}

所以你得到了基本的想法。advance函数循环遍历current_line,当它到达终点时,它将current_line加1。然而,问题是在第一个if...else语句。当我尝试执行array[current_line]时,返回一个错误。未定义!

我不知道为什么会这样,因为array[1]是最明确定义的,current_linearray的长度范围内

请帮

将换行符更改如下:

function newline() {
if (current_line < array.length - 1) {
current_line += 1
current_pos_in_line = -1
advance()
}
}

这将防止错误,尽管您应该真正检查驱动advance函数前进的some_condition。

最新更新