返回字符串中单词的首字母(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
,尝试获取索引的索引,并且函数似乎被设置为只返回一个字符。使用与方法同名的变量也不是一个好主意。