2017-08-25 107 views
-1

我一直收到无限循环,不明白为什么我的代码无法正常工作并不断崩溃浏览器。返回字符串中的第一个字母(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> 
+0

不幸的是没有太多的代码有意义。除了在接受两个参数时只用一个参数调用函数之外,您绝不会更改'firstLetter',尝试获取索引的索引,并且该函数似乎已设置为只返回一个字符。 – JJJ

+1

使用与方法名称相同的变量也不是一个好主意。 – rrd

回答

1

没有办法从您的while循环中。它始终持续查找字符串中的第一个空格,因为letter = word.indexOf(" ")只会找到第一个空格。您应该记住呼入indexOf循环(while ((letter = word.indexOf(" ", letter)) !== -1))中的值,而不是使用第二个呼叫,因此它可以提取您离开的位置,并且可以在字符串中工作。当它没有提供时,您应该也默认letter(开始时letter = letter || 0;将为此功能执行;如果它有任何虚假 *值,则设置letter0 *值)。

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

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


另外,您可能希望在循环中添加到firstLetter


*“falsy” - JavaScript有“falsy”值(如布尔值使用时强制到false值)和“truthy”值(如那些使用布尔值时强迫到true)。伪造值是undefined,"",0,NaN,null,当然还有false。其他所有人都是真的。如果在调用函数时没有为参数提供参数,则参数的值为undefined

相关问题