2013-05-25 120 views
4

我終於開始學習JavaScript了,出於某種原因,我無法獲得這個簡單的功能。請告訴我我做錯了什麼。簡單的JavaScript字數統計功能

function countWords(str) { 
/*Complete the function body below to count 
    the number of words in str. Assume str has at 
    least one word, e.g. it is not empty. Do so by 
    counting the number of spaces and adding 1 
    to the result*/ 

var count = 0; 
for (int 0 = 1; i <= str.length; i++) { 
    if (str.charAt(i) == " ") { 
     count ++; 
    } 
} 
return count + 1; 
} 
console.log(countWords("I am a short sentence")); 

我得到一個錯誤SyntaxError: missing ; after for-loop initializer

感謝您的幫助

+0

for循環結構應該是:for(var i = 0; i <= str.length; i ++) – Nile

+1

@Nile:其實'i Guffa

+3

通過字符串中的每個字符做一個循環將是非常低效的我推薦你做下面的str.split('').length – elmuchacho

回答

5

Javascript中沒有int關鍵字,使用var來聲明一個變量。此外,0不能是一個變量,我相信你的意思是聲明變量i。此外,你應該從0環至長-1在字符串中的字符:

for (var i = 0; i < str.length; i++) { 
+0

完美,就是這樣。感謝在我學習JS的旅程中讓我失去了記憶 –

4

我想你想寫這個

for (var i = 0; i <= str.length; i++) 

,而不是這個

for (int 0 = 1; i <= str.length; i++) 

所以問題是沒有什麼像在JavaScript中的int,也是你使用0=1,沒有任何意義。只需使用變量ivar關鍵字即可。

2

for (int 0 = 1; i <= str.length; i++) 

應該

for (var i = 1; i <= str.length; i++) 

沒有關鍵字int在JavaScript

2

這就是你想要的:

function countWords(str) { 
var count = 0, 
i, 
foo = str.length; 

for (i = 0; i <= foo;i++;) { 
if (str.charAt(i) == " ") { 
count ++; 
} 

} 
return console.log(count + 1); 
} 


countWords("I am a short sentence"); 

btw。儘量避免在循環內聲明變量,當外部變得更快時