无法读取未定义

时间:2017-07-14 08:40:47

标签: javascript

任何人都可以帮助我理解我在这里做错了什么。我是JavaScript编程的新手。我收到了这个错误:

  

无法读取未定义的属性'charAt'。

//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("Hi there.");

<!-- end snippet -->

4 个答案:

答案 0 :(得分:1)

循环条件需要更新。看到你的字符串包含4个单词,但迭代循环直到我变为4并从0开始,即迭代将完成5次

&#13;
&#13;
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");
&#13;
&#13;
&#13;

答案 1 :(得分:1)

只需从此行中删除=符号

即可

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

&#13;
&#13;
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");
&#13;
&#13;
&#13;

答案 2 :(得分: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个值存在。

答案 3 :(得分:0)

对于带有 Angular UniversaldominoServer-Side Rendering (SSR) 主题的开发者;这可能是由于您使用 xhr2 包的原因。

因此,删除它可以解决问题。很可能您正在以某种方式使用 (global as any).XMLHttpRequest = require('xhr2');,然后只需删除该行。 #830 (comment)

中的更多信息