2014-08-28 357 views
0

下面是一個簡單的演示:混淆關於JavaScript增量運算

var foo = 1; 
foo = foo++; 
console.log(foo) // 1 

爲什麼foo結果1,不2

我覺得foo++表達式返回1第一,但隨後本身增加2,覆蓋1價值,所以爲什麼foo結果不2

+0

當滿足分號時,不會發生增加,但在表達式'foo ++'產生'1'之前不會發生增加。 – Bergi 2014-08-28 09:45:36

回答

0

該代碼使得這些操作的順序發生:

  1. foo++評估爲1
  2. foo++遞增到2
  3. 1(計算表達式的結果)傳遞左
  4. foo = 1導致該值被分配到foo(覆蓋2)。
0

雖然我不能完全肯定,但根據operator precedence我覺得在這一行

foo = foo++; 

1)++經營者有更高的優先級是什麼。它必須做的是返回foo的當前值。之後,遞增foo的值。

2)=經營者有優先級高,因此,它會得到從操作++這是1返回值,它會的foo值設置爲1。因爲增量發生在這兩個操作之間,所以它失去了它的價值。並且foo的最終值是1

因爲我不完全確定,如果有任何問題糾正我。謝謝。