我有这个代码。由于某种原因,我得到错误:Uncaught TypeError: Cannot read property 'length' of undefined
。我似乎无法弄清楚原因。
function findShort(s) {
var c = s.split(' ');
var l = c[0].length;
var wordlength;
for (var i = 1; c.length; i++) {
console.log(c[i].length);
wordlength = c[i].length;
if (l < wordlength) {
l = wordlength;
}
}
return l;
}
console.log(findShort("hello dog cat 12 asdsad wuidhuiwqhd"));
&#13;
错误在于行wordlength = c[i].length;
当我在console.log中时,它会显示数组中每个字符串的长度。但是,当我尝试存储该长度时,它表示它未定义。
答案 0 :(得分:3)
您需要更改此行
for ( var i = 1; c.length; i++ ) {
到
for ( var i = 1; i<c.length; i++ ) {
for
循环的第二个组件是一个布尔条件,检查每一轮循环以确定循环是否应该继续。通过放置c.length
,您将给出一个常量值,该值将使循环永远不会运行(如果c.length
为0),或者永远运行(如果c.length
不是0)。< / p>
您还应该注意以下几行:
var l = c[0].length;
它可能会导致问题,因为无法保证c
至少有一个元素。