我正在尝试学习javascript并且无法弄清楚为什么我在第6行中遇到错误(无法读取未定义的属性“长度”)如果相同的属性(索引中每个单词的长度)打印正确低于它。
function findShort(s){
var inpt = s.split(' ');
var final = 100;
for (var i = 0; i <= inpt.length; i++) {
if (inpt[i].length <= final) {
console.log(inpt[i].length);
final += inpt[i].length;
}
}
return final;
}
findShort("this is a test");
所以,我会得到:
// -> 4
// -> 2
// -> 1
// -> 4
// -> TypeError: Cannot read property 'length' of undefined
at findShort:6:16
at eval:14:1
at eval
at n.<anonymous>
答案 0 :(得分:3)
它正在发生,因为你的阵列结束了。你需要迭代直到它&lt;&lt; s&lt;长度,而不是&lt; =。
function findShort(s){
var inpt = s.split(' ');
var final = 100;
for (var i = 0; i < inpt.length; i++) { // < not <=
if (inpt[i].length <= final) {
console.log(inpt[i].length);
final += inpt[i].length;
}
}
return final;
}
findShort("this is a test");
&#13;
答案 1 :(得分:-1)
您有错误。
请尝试for (var i = 0; i < inpt.length; i++)
,因为您的indexaton小于inpt.length