2013-08-14 2 views
0

Функция здесь предполагает использовать начало каждого слова. Я знаю, что есть другие более простые решения, но я немного упрям, почему этот не работает должным образом. Его прикрытие «неопределенным» после моего возвращения каждый раз.Javascript: Занимая начало каждого слова.

function LetterCapitalize(str) { 

    var c = str[0].charCodeAt(0); 
    var letter; 
    var result = ""; 

    if((c >= "a".charCodeAt(0) && c <="z".charCodeAt(0)) || (c >= "A".charCodeAt(0) && c <="Z".charCodeAt(0))) 
    { 
    result = str[0].toUpperCase() 
    } 
    else 
    { 
    result += str[i]; 
    } 

    for(var i=1; i<=str.length; i++) 
    { 
     if(str[i-1] == " ") 
     { 
      letter = str[i].toUpperCase() 
      result += letter; 
     } 
     else 
     { 
      result += str[i]; 
     } 
    } 
     return result; 
} 
+1

Связанный: [Заглавные слова в строке] (http://stackoverflow.com/q/2332811/464709). –

+6

'i <= str.length' должно быть' i

+1

Ваш исходный 'if' не нужен. – SLaks

ответ

0

Если вы изменяете

for(var i = 1; i <= str.length; i++)

в

for(var i = 1; i < str.length; i++)

он будет работать, как вы ожидаете. В его нынешнем виде вы индексируете в строку еще одно дополнительное время, которое будет возвращено undefined.

Также первое, если/else утверждение может быть полностью отброшено. Оператор else будет синтаксической ошибкой в ​​любом случае с i is undefined

Смежные вопросы