对Javascript中的for循环感到困惑

时间:2016-03-26 06:00:14

标签: javascript for-loop iteration

这个功能的结果是:" yoyo我的兄弟"。

为什么哟只在第一次迭代时添加,为什么结果不是:" yoyo yomy yobrother"?

function myFunction() {
  var cars = ["yo", "my", "brother"];
  var i = 2;
  var len = cars.length;
  var text = "yo";

  for (; i < len; i++) { //typo, var i=0;
    text += cars[i]+ " ";
 }
};

哦,sry,我不知道我是怎么错过那个拼写错误的xD。谢谢你的帮助。

5 个答案:

答案 0 :(得分:0)

在您的代码中:

  • 您应该将i设置为0,从第一个开始    数组的值。

  • 你设定    yo文本的另一个变量是常量,用于追加并使text变量为空。

如果你想得到&#34; yoyo yomy yobrother&#34;结果做这样的事情:

function myFunction() {
  var cars = ["yo", "my", "brother"];

  var len = cars.length;
  var text = "";
  var yotext = "yo";

  for (i=0; i < len; i++) {
    text += yotext +cars[i]+ " ";
 }
 console.log(text);
};

myFunction();

<强> Fiddle

答案 1 :(得分:0)

以下假设您要将i初始化为0。

因为+=运算符会将文本附加到现有字符串。您正在执行以下操作:

第一次迭代:"yo" + "yo" + " " = "yoyo "

第二次迭代:"yoyo " + "my" + " " = "yoyo my "

第三次迭代:"yoyo my " + "brother" + " " = "yoyo my brother "

答案 2 :(得分:0)

for循环通常有三个部分:

1)初始化程序 - 给变量一个起点 2)条件 - 只有在它为真时才会运行循环 3)修饰符 - 更改变量的值

因此,典型的for循环将如下所示:

for (var i = 2; i < len; i++){

}

循环将以这种方式执行:

  1. 将i初始化为值2。
  2. 检查条件是否为真(2小于3)
  3. 它进入循环并将汽车[2]添加到文本中。换句话说,它将“兄弟”添加到文本中。
  4. 完成循环的迭代。 i ++现在增加1到i。我现在3岁。
  5. 检查条件。我不再低于len(3不低于3)。所以程序退出循环。
  6. 您是否有理由将i的值设为2而不是0?

答案 3 :(得分:0)

让我们分解代码。

我们有一个数组,汽车,包含3个项目。然后声明i,后来在for循环中用作迭代器(计数器)。我将继续并假设这是无意的,你的意思是i在for循环中

for (var i=0; i<len; i++)

for循环在其括号内重复指定次数的代码。在第一个分号后面的for语句的第一部分是迭代器。 i将基于语句的第3部分在每次循环运行时更改,在本例中为i++。这意味着将i增加1. for语句的第二部分指出循环只会在i小于len时重复 - 在这种情况下,我们的项目数量数组,3。

最后,在for循环中有一行text += cars[i] + "";告诉JavaScript每次for循环运行时都将字符串放在一起。我们从"yo"开始,然后在每次运行中开始:

i    string
-------------------------
0    "yoyo "
1    "yoyo my"
2    "yoyo my brother"

答案 4 :(得分:0)

因为代码没有前置&#34;哟&#34; (text的初始值)到cars[i]+ " ",而不是它的值text,其值随循环而变化。

我相信你对+=运算符比对循环感到困惑。

text += cars[i]+ " ";相当于text = text + cars[i]+ " ";

通过循环,text的值将随着每次迭代而改变,如下所示。

- yo
0 yoyo
1 yoyo my
2 yoyo my brother

因此,text的值将在第一次循环迭代中改变,并且它将不再是&#34;哟&#34;。所以,难怪&#34; yoyo yomy yobrother&#34;没有成功。

相关问题