运算符优先级

从高到低

  1. ++ —
    • / %
    • -

      复杂运算技巧

  2. 从左到右依次查看

  3. 如果遇到操作数,将数据的值直接取出
  4. 如果遇到相邻的两个运算符,并且左边的运算符优先级大于等于右边的运算符,则直接运行左边的运算符。

    示例

    1. var x = 1;
    2. var y = x + x++ * (x = x + x++ * ++x) + x;
    3. console.log(y);
    计算过程
    第一步
    从左到右的计算,无视掉小括号
    1. var x = 1;
    2. var y = 1 + x++ * (x = x + x++ * ++x) + x;
    第二步
    x++ 先不急 看后的运算符号 ++ 的优先级比大,先算++
    1. var x = 2;
    2. var y = 1 + 1 * (x = x + x++ * ++x) + x;
    第三步
    遇到小括号,先算括号里的表达式
    括号里是赋值,赋值先算左边
    1. var x = 2;
    2. var y = 1 + 1 * (x = 2 + x++ * ++x) + x;
    第四步
    与第二步同理
    1. var x = 3;
    2. var y = 1 + 1 * (x = 2 + 2 * ++x) + x;
    第五步
    与第二差不多
    1. var x = 3;
    2. var y = 1 + 1 * (x = 2 + 2 * 4) + x;
    第六步
    算出括号里的值
    1. var x = 10;
    2. var y = 1 + 1 * 10 + x;
    第七步
    号的优先级高 先算
    1. var x = 10;
    2. var y = 1 + 10 + x;
    第八步
    1. var x = 10;
    2. var y = 1 + 10 + 10;
    结果
    1. var x = 10;
    2. var y = 21;