1、案例1:
var n=2;
var r=n++ + ++n + n++;
console.log(n);
console.log(r);
解析——
上述小案例题目主要是一道用于区分前“++”、后“++”。
解决该题目首要问题,首先要明白
(1)表达式“n++” 、“++n”、“n++”=?
(2)变量“n” =?
其次,按照表达式从左至右顺序依次计算,不得调换顺序,解析过程如下:
var r=n++ + ++n + n++
step1:?__ 2
n=?__ 3
step2:?__ 4
n=?__ 4
step4:r=step1_? + step2_? =2+4 =6
step3:?__ 4
n=?__ 5
step5:r=step4 + step3_? =6+4 =10
最后,由上述各个步骤表达式可以得出
r=10
n=5
总结——
(1)?_:表示的是“++n/n++”表达式的值;
(2)n=?_:表示的是“++n/n++”运算后,“n”的值
2、案例2:
var n=2;
var r=++n + n++ + ++n;
console.log(n);
console.log(r);
由于前边准备工作与案例1基本相同,所以直接跳到第2步
按照表达式从左至右顺序依次计算,不得调换顺序,解析过程如下:
var r=++n + n++ + ++n
step1:?__ 3
n=?__ 3
step2:?__ 3
n=?__ 4
step4:r=step1_? + step2_? =3+3 =6
step3:?__ 5
n=?__ 5
step5:r=step4 + step3_? =6+5 =11
最后,可以得出结果:
r=11;
n=5;
总结:
上述两个案例只是简简单单的更换了“++n”与“n++”的前后顺序,计算结果就发生了一系列的变化,但需要注意的是
变化的只是“r”的值,但是对于“n”的值,是不变的。
案例的效果只是想表达计算中“n++”与“++n”二者的异同。如下所示:
(1)前++(++n),将n的值加1,返回的是新值;
(2)后++(n++),将n的值加1,返回的是旧值。
3.案例3——“++”的拓展“--”
var n=10;
var r=n-- + --n + n--;
console.log(r);
console.log(n);
原理:与“++”基本相同,
(1)前--(--n),将n的值减1,表达式返回的是新值;
(2)后--(n--),将n的值减1,表达式返回的是旧值。
解析——
step1:n-- 10 step2:--n 8(step1.n-1) step3:n-- 8
n 9 n 8 n 7(step2.n-1)
所以,r=step1.n-- + step2.--n + step3.n--
=10+8+8
=26
n=8