自增和自减
基本功能
一元运算符
++: 将某个变量的值自增1
--: 将某个变量的值自减1
细节
自增自减表达式
x++: 将变量x自增1、得到的表达式的值是自增之前的值。
++x: 将变量x自增1、得到的表达式的值是自增之后的值。
x--: 将变量x自减1、得到的表达式 的值是自减之前的值。
--x: 将变量x自减1、得到的表达式 的值是自减之后的值。
优先级
从高到底依次是:
1. ++ --
2. * / %
3. + -
优先级的运算细节
- 从左到右依次看
- 如果遇到操作数、将数据的值直接取出
- 如果遇到相邻的两个运算符、并且左边的运算符优先级大于等于右边的运算符、则直接运行左边的运算符。
自增自减优先级练习
<script>
var x = 1;
var y = x + x++ * ++x;
console.log(y); // 4
/*
解法-->从左往右
1) x=1;
1) y=1 + x++ * ++x;
2) x = 2;
2) y = 1 + 1 * ++x;
3) x = 3
3) y = 1 + 1 * 3;
= 1 + 3 = 4
*/
</script>
<script>
var x = 1;
var y = x + x * x / 2 + 6;
console.log(y); // 7.5
/*
解法-->从左往右
1) x=1;
1) y=1 + x * x / 2 + 6;
2) x = 1;
2) y = 1 + 1 * x / 2 + 6;
3) x = 1
3) y = 1 + 1 * 1 / 2 + 6;
= 1 + 1 / 2 + 6
= 1 + 0.5 + 6
= 1.5 + 6
= 7.5
*/
</script>
<script>
var x = 1;
var y = x++ + ++x + x++ * ++x + ++x;
console.log(y); // 25
/*
解法-->从左往右
1) x=1--2--3--4--5;
1) y= x++ + ++x + x++ * ++x + ++x;
= 1 + ++x + x++ * ++x + ++x;
= 1 + 3 + x++ * ++x + ++x;
= 4 + x++ * ++x + ++x;
= 4 + 3 * ++x + ++x;
= 4 + 3 * 5 + ++x;
= 4 + 15 + ++x;
= 19 + ++x;
= 19 + 6
= 25
*/
</script>
<script>
var x = 1;
var y = x + x++ * (x = x + x++ * ++X) + x ;
console.log(y); // 21
/*
解法-->从左往右
1) x=1--2--3--4--10;
1) y= x + x++ * (x = x + x++ * ++X) + x ;
= 1 + x++ * (x = x + x++ * ++X) + x ;
= 1 + 1 * (x = x + x++ * ++X) + x ;
= 1 + 1 * (x = 2 + 2 * 4) + x ;
= 1 + 1 * (x = 2 + 8) + x ;
= 1 + 1 * (x = 10) + x ;
= 1 + 1 * 10 + x;
= 1 + 10 + x;
= 11 + 10 ;
=21
*/
</script>