返回字符串中单词的首字母(javascript)

返回字符串中单词的首字母(javascript),javascript,indexof,charat,Javascript,Indexof,Charat,我不断得到一个无限循环,不明白为什么我的代码不工作,并不断崩溃的浏览器 <!DOCTYPE html> <html> <body> <script> function firstLetter(word, letter) { var firstLetter = ""; while(word.indexOf(" ", letter) !== -1) {

我不断得到一个无限循环,不明白为什么我的代码不工作,并不断崩溃的浏览器

<!DOCTYPE html>
<html>
<body>
    <script>
        function firstLetter(word, letter) {
            var firstLetter = "";
            while(word.indexOf(" ", letter) !== -1) {
                letter = word.indexOf(" ") + 1;
                console.log(word.charAt(letter));

            }
            return firstLetter; 
        } 
        console.log(firstLetter('Hi!, my name is Jessica.'));
    </script>
</body>
</html>

函数首字母(单词、字母){
var firstLetter=“”;
while(word.indexOf(“,字母)!=-1){
字母=word.indexOf(“”+1);
console.log(word.charAt(字母));
}
返回第一封信;
} 
log(第一个字母('Hi!,我的名字是Jessica');

循环时,您的
没有出路。它不断地、永远地在字符串中查找第一个空格,因为
letter=word.indexOf(“”)
将只查找第一个空格。您应该记住在循环(
while((letter=word.indexOf(“,letter))!=-1)
)中调用
indexOf
得到的值,而不是使用第二次调用,因此它会从您停止的位置开始,然后按自己的方式处理字符串。当未提供字母时,您还应默认设置字母(
letter=letter | | | 0;
开头的字母将用于此函数;如果它有任何falsy*值,则将字母设置为
letter

或者,您可以使用
split
,然后获取每个条目的第一个字母

请注意,我没有提供明确的代码,因为我认为这是一个学习练习


另外,您可能希望将第一个字母添加到循环中的
firstLetter



*“falsy”-JavaScript有“falsy”值(当用作布尔值时强制为
false
)和“truthy”值(当用作布尔值时强制为
true
)。falsy值是
未定义的
0
NaN
null
,当然还有
false
。其他的都是真实的。调用函数时,如果不为参数提供参数,则该参数将获得值
未定义

,不幸的是,代码中没有多少内容是有意义的。除了在函数接受两个参数时仅使用一个参数调用函数外,您永远不会更改
firstLetter
,尝试获取索引的索引,并且函数似乎被设置为只返回一个字符。使用与方法同名的变量也不是一个好主意。