2016-03-07 61 views
1

所以下面两个函数打印出完全相同的结果。为什么++我没有增加我之前的循环?

console.log("i++"); 
for (i=1; i<=3; i++) { 
    console.log(i); // 1, 2 
} 
console.log("++i"); 
for (i=1; i<=3; ++i) { 
    console.log(i); // 1, 2 
} 

这非常直观,因为我特别要求后增加一个,每增加一个。 在for循环内运行之前,增加值是非常理想的行为。这种行为是否一致?,这个javascript是特定的还是这是跨越使用++ i,i ++语法和循环的编程语言的标准行为?

+1

*“这将是非常可取的行为里面的for循环运行之前,增加价值。” *你可以做到这一点。没有任何理由说明'for'语句头部的第三部分必须包含增量。 '为(I = 1; ++ I <= 3;){' – 2016-03-07 16:57:19

+1

或者,如果你想要的'i'评价为是,但随后的主体之前递增,然后改变它后增量'为(I = 1;我++ <= 3;){' – 2016-03-07 16:58:27

+0

斜视,没想到这感谢! – lonewarrior556

回答

6

for循环标题中的第三个表达式在每次迭代之后评估为。因此:

  1. i被初始化为1
  2. 环路测试表达式,i <= 3,进行评估(并发现是true
  3. 循环体被执行
  4. i++++i发生

除轻微语法差异,这正是会在发生C程序在1976年

+1

或者,现在确实是一个C程序:-) – paxdiablo