我知道後綴/前綴增量/減量運算符的作用。而在JavaScript中,這似乎沒有什麼不同。評估的Javascript增量操作順序
雖然我可以猜到此行的結果很容易:
var foo = 10; console.log(foo, ++foo, foo, foo++, foo);
// output: 10 11 11 11 12
爲++
運營商單獨出現在表達式中。
它變得有點複雜,因爲這些運營商出現在同一個表達式中:
var foo = 10; console.log(foo, ++foo + foo++, foo);
// output[1]: 10 22 12
// Nothing unexpected assuming LTR evaluation
var foo = 10; console.log(foo, foo++ + ++foo, foo);
// output[2]: 10 22 12
// What? Ordering is now different but we have the same output.
// Maybe value of foo is evaluated lazily...
var foo = 10; console.log(foo, foo + ++foo, foo);
// output[3]: 10 21 11
// What?! So first 'foo' is evaluated before the increment?
,我的問題是,如何使用Javascript(V8在這種情況下,我測試了這些在Chrome)最終評估在第二和第三個例子中的加法表達是不同的
爲什麼foo
的結果與foo++
的結果不同。不是後綴++
應該在表達式後遞增,並且只在表達式內求值爲foo
?
我相信你的描述顯示了行爲在JavaScript中,除了是*左*關聯。這意味着首先評估'left_expression + right_expression'中的左表達式。我相信,增量操作符的行爲方式與您期望的相同。 –