运算符优先级
从高到低
- ++ —
- / %
从左到右依次查看
- 如果遇到操作数,将数据的值直接取出
- 如果遇到相邻的两个运算符,并且左边的运算符优先级大于等于右边的运算符,则直接运行左边的运算符。
示例
计算过程var x = 1;
var y = x + x++ * (x = x + x++ * ++x) + x;
console.log(y);
第一步
从左到右的计算,无视掉小括号
第二步var x = 1;
var y = 1 + x++ * (x = x + x++ * ++x) + x;
x++ 先不急 看后的运算符号 ++ 的优先级比大,先算++
第三步var x = 2;
var y = 1 + 1 * (x = x + x++ * ++x) + x;
遇到小括号,先算括号里的表达式
括号里是赋值,赋值先算左边
第四步var x = 2;
var y = 1 + 1 * (x = 2 + x++ * ++x) + x;
与第二步同理
第五步var x = 3;
var y = 1 + 1 * (x = 2 + 2 * ++x) + x;
与第二差不多
第六步var x = 3;
var y = 1 + 1 * (x = 2 + 2 * 4) + x;
算出括号里的值
第七步var x = 10;
var y = 1 + 1 * 10 + x;
号的优先级高 先算号
第八步var x = 10;
var y = 1 + 10 + x;
结果var x = 10;
var y = 1 + 10 + 10;
var x = 10;
var y = 21;