混淆javascript增量运算符

时间:2014-08-28 09:14:01

标签: javascript operators expression increment

这是一个简单的演示:

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

为什么foo结果为1,而不是2

我认为foo++表达式首先返回1,然后将其自身增加到2,覆盖1值,为什么foo结果不是2

2 个答案:

答案 0 :(得分:0)

虽然我不完全确定,但根据operator precedence我想在这一行

foo = foo++;

1) ++运算符具有更高的优先级。它必须做什么返回foo的当前值,即{1}。之后增加foo

的值

2) =运算符的优先级较低,因此它将从++的操作中获取返回的值1并且它将被设置foo1的值。因为增量发生在这两个操作之间,所以它失去了它的价值。 foo的最终值为1

因为我不完全确定,如果有任何问题可以纠正我。谢谢。

答案 1 :(得分:0)

代码导致这些操作按此顺序发生:

  1. foo++的评估结果为1
  2. foo增加++2
  3. 1(评估表达式的结果)向左传递
  4. foo = 1会将该值分配给foo(覆盖2)。