递增和递减操作符,各拥有两个版本:前置型和后置型。
前置型:位于要操作的变量之前 后置型:位于要操作的变量之后。
下面说明前置型和后置型在使用中的区别:
在执行前置型递增和递减操作时,变量的值都是在语句被求值前改变。举例:
let num1 = 10
let num2 = --num1 + 5
console.log(num1);//输出9
console.log(num2);//输出14
这个例子中变量 num2 的初始值等于变量num1 的值前置递减之后加 5。由于先执行了减法操 作,num1 的值变成了 9,所以再加上 5 的结果就是 14。
前置递增和递减操作与执行语句的优先级相等,因此整个语句会从左至右被求值。再看一个例子:
let num1 = 2;
let num2 = 20;
let num3 = --num1 + num2; // 等于 21
let num4 = num1 + num2; // 等于 21
在这里,num3 之所以等于 21 是因为 num1 先减去了 1 才与 num2 相加。而变量 num4 也等于 21 是 因为相应的加法操作使用了 num1 减去 1 之后的值。
与前置不同的是,后置递增和递减是在包含它们的语句被求值之后才执行的。举例:
let num1 = 2;
let num2 = 20;
let num3 = num1-- + num2; // 等于 22
let num4 = num1 + num2; // 等于 21
在前面使用前置递减的例子中,num3和 num4 最后都等于 21。而在这个例子中,num3 等于 22,num4 等于 21。差别的根源在于,这里在计算 num3 时使用了 num1 的原始值(2)完成了加法计算,而 num4 则使用了递减后的值(1)。
所以我们可以清晰的感觉到,后置递增和递减是在包含它们的语句被求值之后才会执行,而执行前置型递增和递减操作时,变量的值都是在语句被求值前改变