我的代码出了什么问题? (coderbyte大写字母)

时间:2015-01-25 23:22:14

标签: javascript

我正在尝试一个coderbyte挑战,并在repl.it我的代码工作。在jsfiddle,使用JSHint,它说一切看起来都很棒。

然而,当我在coderbyte网站上测试参数时,它在参数列表后面显示“SyntaxError:missing”。我不明白为什么我在那里得到错误但在其他网站上却没有?我一直在看这个约一个小时,不知道怎么看待它。

如果您有任何建议,我真的很感激。谢谢你的阅读。

function LetterCapitalize(str) { 
   var phrase = str.split(""), i = -1, a = 0;

   for (i = 0; i < phrase.length; i++) {
     if (i === 0) {
        phrase[i] = phrase[i].toUpperCase();
     }
     else if (phrase[i] === " ") {
        phrase[i + 1] = phrase[i + 1].toUpperCase();
     }
   }
  a = phrase.join(" ");
  console.log(a);
}

LetterCapitalize("hello world");

1 个答案:

答案 0 :(得分:1)

我在您的代码中看到了一个错误,尽管不是语法错误。如果phrase[i + 1] 空格结束,则str会崩溃。在那种情况下,你在最后一个角色,找到一个空格,并试图访问最后一个字符+ 1,这是不可能的。

我至少可以验证我的代码是否有效。试试这个:

&#13;
&#13;
function letterCapitalize(str) {
    var phrase = str.split('');
    
    for (i = 0; i < phrase.length; i++) {
        if (i == 0) {
            phrase[i] = phrase[i].toUpperCase();
        }
        else if (phrase[i] == ' ') {
            if (i + 1 < phrase.length) phrase[i + 1] = phrase[i + 1].toUpperCase();
        }
    }
    
    return phrase.join('');
}


alert(letterCapitalize("hello world"));
&#13;
&#13;
&#13;