JavaScript查找最长单词的代码报length属性undefined错误是什么原因?
报错原因分析
你遇到的TypeError: Cannot read properties of undefined (reading 'length')错误完全是由for循环的终止条件写错导致的,具体问题如下:
- 终止条件中使用的
terminal变量未做任何声明定义,属于拼写失误,你原本的遍历逻辑应该以循环变量i作为判断依据 - 比较逻辑完全颠倒:遍历数组的正确终止条件是判断循环变量
i小于数组长度,即i < words.length,你写的words.length <= terminal和正确逻辑完全不符
上述错误会导致循环不会正常停止,循环变量i会持续累加,最终超过words数组的最大索引,此时words[i]返回undefined,尝试读取undefined的length属性就触发了对应的类型错误。
修复后代码
function findLongestWordLength(str) { let words = str.split(" "); let longword = words[0]; // 仅修正循环条件即可正常运行 for(let i = 0; i < words.length; i++){ if(words[i].length >= longword.length){ longword = words[i]; } } return longword.length; } // 测试用例运行返回6,对应最长单词jumped console.log(findLongestWordLength("The quick brown fox jumped over the lazy dog"));
内容的提问来源于stack exchange,提问作者unizen
相关产品推荐
相关产品推荐

