2017-07-14 498 views
-4

任何人都可以请帮助我理解我在这里做错了什么。我是新来的JavaScript programming.I正在此错误:无法读取属性'charAt'undefined

Cannot read property 'charAt' of undefined.

//Return the first letter of given string. 
function titleCase(str) { 
    var newStr = str.split(' '); 
    for (var i = 0; i <= newStr.length; i++) { 
    console.log(newStr[i].charAt(0)); 
    } 
} 
titleCase("Coding is not easy"); 

<!-- end snippet --> 
+6

'<='应该是'<'。 – Tushar

+0

请参阅[*针对JavaScript中的每个数组?](https://stackoverflow.com/questions/9329446/for-each-over-an-array-in-javascript)了解循环数组内容的正确方法。 –

回答

0

你循环条件需要得到更新。看你的字符串包括4个字,但迭代循环,直到我成为4和0,即循环开始将进行5次

function titleCase(str){ 
 
    var newStr = str.split(' '); 
 
    for(var i = 0; i < newStr.length; i++){ 
 
     console.log(newStr[i].charAt(0)); 
 
    } 
 
} 
 
titleCase("Coding is not easy");

+0

“...直到'我'变成**'4 **”,而不是5. –

+0

这是一条评论,而不是答案。 –

0

刚刚从该行删除=标志

for(var i = 0; i <= newStr.length; i++){

function titleCase(str){ 
 
    var newStr = str.split(' '); 
 
    for(var i = 0; i < newStr.length; i++){ 
 
     console.log(newStr[i].charAt(0)); 
 
    } 
 
} 
 
titleCase("Coding is not easy");

+0

这是一条评论,而不是答案。 –

0

function titleCase(str){ 
 
    var newStr = str.split(' '); 
 
    for(var i = 0; i < newStr.length; i++){ 
 
     console.log(newStr[i].charAt(0)); 
 
    } 
 
} 
 
titleCase("Coding is not easy");

i <= newStr.length你迭代直到长度相等,并从零开始。问题是最后你得到一个未定义的值。 在你的情况下,newStr数组长度是5,并且你也试图获得第5个元素,而只有4个值存在。

+0

这是一条评论,而不是答案。 –