1

我实际上是 javascript 的新手,只是为了学习基础知识,我开始学习 codecademy 课程。

var i;
for (i = 1; i <= 40; i++) {
  console.log("i is now equal to " + i);
}

这是我的问题 - 在这段代码中,什么时候i <= 40,它应该打印到 41,不是吗?因为for循环继续运行直到条件i <= 40true,但为什么它只打印到 40 呢?

IE

当它在 40 处运行时,它会通过增加一次来打印到 41,不是吗?那为什么它只打印到40?

如果有人还向我解释了代码的确切作用以及每一行的含义和作用,我将非常感激。谢谢。

4

5 回答 5

2

i=1是初始化器,所以 的第一个值为i1。

初始化后,并在每次迭代时返回顶部,i检查条件i<=40。每次完成迭代后,执行增量i++。在第 40 次迭代中,i=40,通过条件并打印日志。然后(与之前的所有迭代一样)i++被调用,i最多 41 个。然后测试失败i<=40因此循环不会再次执行代码块。

结果是控制台打印 1 到 40,然后退出i=41.

于 2012-04-13T15:20:12.497 回答
1

它说以下

var i; // DECLARE A NEW VARIABLE NAMED i

// set i to 1 and do things while i is less than or equal to 40
// after this block of code has executed increase the counter by 1

for (i = 1; i <= 40; i++) {     
  console.log("i is now equal to " + i);  // print "i is now equal to <the value of i>"
}

这意味着它将第一次打印出数字 1 并且每次递增 1 直到 i 等于 41 时循环将完成(但不会在{' 的含义之间执行更多操作 41 永远不会被打印)

如果你写了以下

for (i = 0; i <= 40; i++) {     
  console.log("i is now equal to " + i);  // print "i is now equal to <the value of i>"
}

除了计数将从 0 开始,再迭代一次,但它仍然会在 i 等于 41 时退出,但它仍然不会打印 41

如果您要在循环之外执行另一个日志语句,您会发现 i 等于 41,但该值从未在循环体中使用(大括号中的位)

于 2012-04-13T15:15:38.597 回答
1

循环的最后一次运行i是 40,一旦达到 41,它就会退出循环。该i++语句在循环语句之后执行。

var i;
for (i = 1; i <= 40; i++) {
  console.log("i is now equal to " + i);
}

console.log("i is now equal to " + i); // Now it's 41

这就是 for 循环的工作原理

for ( var i= 0; /* initializer */; 
     i < 40; /* check whether it should run, before running loop statements */ 
     i++ /* happens after the loop statements */ )
于 2012-04-13T15:17:59.013 回答
0

i = 41条件语句 ( i <= 40) 被检查并false返回时,循环停止执行其内容。

于 2012-04-13T15:17:37.377 回答
0

在执行 for 循环内的代码之前,会检查条件(在您的情况下 i <= 40)。因此,当 i 达到 41 时,i <= 40 将评估为 false,因此不会执行该块并且不会打印 41。

此外,增量 (i++) 发生在条件之前。

于 2012-04-13T15:19:19.380 回答