JS中运算符i++与++i的详细分析

来源:互联网 发布:java调用go语言 编辑:程序博客网 时间:2024/05/19 00:07

新手朋友容易混淆的概念,特提出自己的想法思路,仅供参考,错误之处,还望指出。

请看下面代码:
<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title></title></head><body>    <script>        var a=10,b=20,c=30;        ++a;        a++;        e=++a+(++b)+(c++)+a++;        alert(e);    </script></body></html>

解答此题首先弄明白:i++返回的是自增之前的值,++i返回的则是自增后的值。
如:var i = 1;var a = i++;  //a = 1;  此时i先将值1赋给a,然后自己+1,i=2;var b = ++i;  //b = 3;此时i先自己+1为3.再给b赋值,b=3;
再看此题:那么++a意思为a=a+1 a为11,此时不涉及运算优先级的问题。
a++意思为a=a+1       a为12  ,此时仍旧不涉及运算优先级的问题。
当e=++a+(++b)+(c++)+a++;时,必须考虑运算级的问题。
此时:++a a先自己+1  然后将值赋给结果:13      a=13
++b  b先自己+1  然后将值赋给结果:21      b=21
C++ 先将c值赋给结果:30     c自己+1      c=31
a++ 先将a值13赋给结果:13   a自己+1       a=14
此时所有结果加起来:13+21+30+13=77

1 0