Return 字符串中单词的第一个字母 (javascript)

Return first letters of words in a string (javascript)

我不断遇到无限循环,不明白为什么我的代码无法正常工作并不断使浏览器崩溃。

<!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>

没有办法摆脱你的 while 循环。它不断地、永远地寻找字符串中的第一个 space,因为 letter = word.indexOf(" ") 只会找到第一个 space。您应该记住在循环 (while ((letter = word.indexOf(" ", letter)) !== -1)) 中调用 indexOf 而不是使用第二个调用获得的值,因此它会从您停止的地方开始,然后您可以继续处理字符串。您还应该在未提供 letter 时默认(letter = letter || 0; 开头将用于此功能;如果它有任何 ,则将 letter 设置为 0虚假* 值)。

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

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


另外,您可能想在循环中添加 firstLetter


* "falsy" - JavaScript 具有 "falsy" 值(当用作布尔值时强制为 false 的值)和 "truthy" 值(强制为 false 的值用作布尔值时为 true)。虚假值是 undefined""0NaNnull,当然还有 false。其他都是真实的。如果您在调用函数时没有为参数提供实参,则参数将获得值 undefined.