请考虑以下代码段:
var i = 1;
i = i-- + ++i;
我对运算符和操作数的处理顺序的理解如下:
如果我的理解是正确的,那么我最终的值应该为3。但是,我使用一些在线JavaScript解释器打印了结果,而i的最终值为2。
我在哪里弄错了?
// parentheses added for clarity
i = (i--) + (++i); // i = 1
i = 1 + (++i); // i = 0 after i--
i = 1 + 1 ; // i = 1 after ++i
i = 2 ;
创建一个名为i的变量
将i的值设置为1
- [(rhs第一个元素)取i的值(1)减数值(i现在为0)
- [rhs第二个元素)i的增量值(i现在为1)
- 将i的值设置为rhs(2)
var i = 1;
i = i-- + ++i;
prefix increment(++i) precedence = 17
postfix decrement(i--) precedence = 16
addition(+) precedence = 14
i = 1 + 1
i = 2
可以在以下位置找到更多与优先级相关的信息,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence