这是一个简单的演示:
var foo = 1;
foo = foo++;
console.log(foo) // 1
为什么foo
结果为1
,而不是2
?
我认为foo++
表达式首先返回1
,然后将其自身增加到2
,覆盖1
值,为什么foo
结果不是2
?
答案 0 :(得分:0)
虽然我不完全确定,但根据operator precedence我想在这一行
foo = foo++;
1) ++
运算符具有更高的优先级。它必须做什么返回foo
的当前值,即{1}。之后增加foo
。
2) =
运算符的优先级较低,因此它将从++
的操作中获取返回的值1
并且它将被设置foo
到1
的值。因为增量发生在这两个操作之间,所以它失去了它的价值。 foo
的最终值为1
。
因为我不完全确定,如果有任何问题可以纠正我。谢谢。
答案 1 :(得分:0)
代码导致这些操作按此顺序发生:
foo++
的评估结果为1
foo
增加++
到2
1
(评估表达式的结果)向左传递foo = 1
会将该值分配给foo
(覆盖2
)。