是否可以在 for 循环的初始化部分声明两个变量?我想对字符串的每个字符调用一个函数。
for(var i = 0, c = aString.charAt(i); i < aString.length; i++){//problem here: not itterating
alert("c: "+c)
func1[typeOfChar(c)]++
}
问题是字符串在某种意义上没有被迭代c
始终是字符串的第一个字母。
这alert
顺便说一句,只是为了解决问题。
我很好奇,怎么会这样c
不需要var
声明时的关键字?
更新:让它工作。我本来不想问,但我注意到仍在进行编辑,我习惯不使用分号,因为它们是可选的。没有它们如何编写 for 循环?我不添加它们是因为我认为它越少越简单,或者它们是否提高了可读性?
你想c
要在每次迭代时更改,而不是在循环开始时声明它,请尝试
var i,c;
for(i = 0,c=aString.charAt(0); i < aString.length; ++i, c = aString.charAt(i)){
alert("c: "+c)
func1[typeOfChar(c)]++
}
就其价值而言,我认为它不会产生非常可读的代码,我会将其放在第一行。
这是一些信息在逗号运算符上 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Comma_Operator你正在使用。
另请注意,javascript 没有 for 循环的块作用域,因此您实际上是在声明i
and c
在当前作用域的顶部(这通常是当前函数的顶部,或全局作用域的顶部)。
这是一个小提琴:http://jsfiddle.net/maWua/ http://jsfiddle.net/maWua/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)