简单的JavaScript字数统计函数

4

我最近开始学习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: for循环初始化器后缺少分号

感谢您的帮助。


for循环的构造应该是:for (var i=0;i<=str.length;i++) - Nile
1
@Nile:实际上应该是 i<str.length,这样就不会超出字符串的范围了。 - Guffa
3
建议使用以下代码 str.split(' ').length,而不是对字符串中的每个字符进行循环,这样做效率会非常低。 - elmuchacho
4个回答

5

在Javascript中没有int关键字,使用var来声明变量。同时,0不能作为变量,我相信你想要声明变量i。此外,对于字符串中的字符,应该从0循环到length-1:

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

太完美了,就是这样。感谢您帮助我在学习JS的旅程中解决了困难。 - Val Okafor

4

我认为您想要写这个

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

改为

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

所以问题在于JavaScript中没有像int这样的东西,而且你正在使用0=1,这毫无意义。只需使用带有var关键字的变量i即可。

2

这个

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

应该是

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

在javascript中没有关键字int


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");

顺便说一下,尽量避免在循环内部声明变量,将其放在外面可以更快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接