我知道后缀/前缀递增/递减运算符的作用。而在 javascript 中,这似乎没有什么不同。
虽然我可以很容易地猜出这一行的结果:
var foo = 10; console.log(foo, ++foo, foo, foo++, foo);
// output: 10 11 11 11 12
as ++
运算符出现在单独的表达式中。
它变得有点复杂,因为这些运算符出现在同一个表达式中:
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
表达内?