JavaScript中的for()循环、split()和数组问题

7

好的,最近我一直在问很多关于JS的问题,然后意识到我只需要去学习它。

我一直在跟随http://www.tizag.com/javascriptT上的教程,非常简单而直接。

我只想确保我理解得正确。花了我一段时间才明白:

<script type="text/javascript">
var myString = "zero one two three four";

var mySplitResult = myString.split(" ");

for(i = 0; i < mySplitResult.length; i++){
    document.write("<br /> Element " + i + " = " + mySplitResult[i]); 
}
</script>

-

var myString = "zero one two three four";

显然这创建了一个简单的字符串变量。
var mySplitResult = myString.split(" ");

这个代码使用空格作为分隔符进行分割,然后将其赋值给mySplitResult数组。是这样吗?还是它不是一个数组?

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

这是在说数组中数值的数量吗?看起来不像是在说字符串的实际字符长度。

document.write("<br /> Element " + i + " = " + mySplitResult[i]); 

这只是返回我的 mySplitResult[i] 变量 "i"。由于 i 随着每次循环递增,它从数组中提取了正确的信息。

8
答案是“是”。没有什么别的可说的。 - Michael Myers
1
您可以使用在线参考资料(如Mozilla的https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference或Microsoft的http://msdn.microsoft.com/en-us/library/yek4tbz0(VS.85).aspx)来检查此类详细信息。 - NickFitz
2个回答

13

您的理解基本上是正确的。您需要做的一件事就是声明所有变量:这在函数内部尤其重要。因此,您应该将i声明为一个变量,可以在循环之前:

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

...或者是在 for 语句的第一个表达式中:

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

1
你的分析是正确的,但你应该通过测试来验证。使用Firefox浏览器的Firebug扩展程序,你可以逐步执行你的JavaScript代码。
这将帮助你理解正在发生的事情,因为你可以查看元素的属性并监视实际发生的情况。

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