2016-03-07 58 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