我的代码中出现错误
下面是代码
function findLongestWordLength(str) {
let word = str.split(" ");
console.log(word);
let totalWords = word.length;
for (let i = 0; i <= totalWords; i++) {
let max = '';
let cmax = word[i].length;
console.log(cmax);
if (cmax > max) {
max = cmax;
}
}
console.log(max);
}
findLongestWordLength("The quick brown fox jumped over the lazy dog");
我很困惑,因为它在控制台中显示cmax
,但之后给出了一个错误。
3条答案
按热度按时间46qrfjad1#
如前所述,循环太远,需要将最大值移到循环之外。
此外,请返回值,而不是在函数中记录控制台
这是一个更简洁的版本-注意这里没有太多的输入控制
j7dteeu82#
这是我以前学习时遇到的一个有趣的问题。
你写的代码的问题是,你在for循环中声明了max变量,这意味着它在每次迭代时都会被重新初始化为空字符串,你应该把max变量声明移到循环之外。
此外,需要将max变量初始化为0而不是空字符串,因为您希望比较单词的长度,并且需要更改if语句中的条件,以便与〉而不是〉=进行比较。
以下是代码的更正版本-在测试的句子中,单词“jumps”最长,因此输出为6。
4dc9hkyq3#
您得到
Index out of Bound
错误,这意味着您循环数组的次数超过了数组的长度。这是由于i <= totalWords
造成的。它应该只为i < totalWords
。此外,您还需要在循环外部定义max = ''(我建议将其定义为任何负整数,如
-1
),如max=-1
。