2017-08-25 108 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

相關問題