【问题标题】:Different results with post-increment operator in for loop [duplicate]for循环中后增量运算符的不同结果[重复]
【发布时间】:2013-02-20 19:21:37
【问题描述】:

在 Javascript 中,我无法理解为什么这两组代码会提供不同的结果:

for (var i = 0, a = []; i++ < 9;) {a.push(i);}

运行这段代码后,变量a如下:[1, 2, 3, 4, 5, 6, 7, 8, 9]

但是,此代码返回其他内容:

for (var i = 0, a = []; i < 9; i++) {a.push(i);}

运行此代码后,变量a 如下:[0, 1, 2, 3, 4, 5, 6, 7, 8]

那么,主要问题是:为什么会这样?

感谢任何解释这种差异的答案。

【问题讨论】:

标签: javascript variables for-loop increment


【解决方案1】:

这只是for 循环操作发生的顺序。评估三个表达式:

  for (before the loop starts;                   // initialization 
       before each iteration of the loop;        // loop condition
       at the end of each iteration of the loop) // loop increment

这使您的 i++ 在相对于循环主体的不同时间运行并解释您看到的结果。

【讨论】:

  • 谢谢,我现在明白了。这是否意味着将i++返回的内容传递给下一个条件,使得++i和i++在增量区时产生差异?
  • 我不确定我是否理解这个问题。你问的是前自增和后自增运算符的区别吗?
  • 好的,让我解释一下。看一下这个例子:i=0;i++; i 无论是i++ 还是++i,它都会返回1。但是,对于此代码:i=0; i++,它将返回 0。
  • 是的,所有这些都是意料之中的。不过,我仍然不确定你在问什么。 i 在这两个序列之后是 1,只是后增量运算符在执行增量之前返回值。
猜你喜欢
  • 1970-01-01
  • 2013-01-12
  • 2017-06-20
  • 2016-02-13
  • 2020-01-21
  • 2018-03-19
  • 2017-06-30
  • 2011-06-10
  • 1970-01-01
相关资源
最近更新 更多