你必须记住的Javascript知识:一元操作符之——递增和递减操作符

    xiaoxiao2022-07-07  210

    一元操作符

    只能操作一个值的操作符叫做一元操作符。

    1.1递增和递减操作符

    递增和递减操作符直接借鉴自C,有两个版本:前置型和后置型。

    前置型:位于要操作的变量之前;

    后置型:位于要操作的变量之后;

     

    前置型:

    我们先来看一个例子:

    var age = 30; ++age; //前置型递增操作符 alert(age); //31

    它等同于:

    var age = 30; age = age + 1; alert(age); //31

    执行前置递减操作与上面类似:

    var age = 30; --age; //前置型递减操作符 alert(age); //29

    请记住,执行前置递增和递减操作时,变量的值都是在语句被求值以前改变的!

    如:

    var age = 30; var anotherAge = --age +1; alert(age); //29; alert(anotherAge); //30

    这个例子中变量 anotherAge 的初始值,等于变量 age 的值前置递减后, 再加1。由于先执行了减法操作, age 的值变成了29,所以再加上1,结果就是30。

    另外,由于前置递增和递减操作执行语句优先级相等,因此整个语句会从左至右被求值

    如:

    var num1 = 2; var num2 = 20; var sum1 = --num1 + num2; var sum2 = num1 + num2; alert(sum1); // 21 alert(sum2); // 21 alert(sum1==sum2); //true

    我们可以看出:

    1、变量 sum1 的值之所以等于21,是因为 num1 先减去了1才与 num2 相加;

    2、变量 sum2 的值也等于21,是因为 num1 的值已经变成 1 之后,再从左至右执行了加法操作后的值;

    由此,我们可以总结一个规律,即:前置型,变量先执行递增和递减操作,它的值会立即改变!

     

    后置型:

    后置型递增和递减操作符的语法不变(仍然是++和--),只不过要放在变量的后面。

    如:

    var age = 30; age++; // 后置型递增操作符 var num= 20; num--; // 后置型递减操作符

    请注意,后置型递增和递减前置递增和递减有一个非常重要的区别,即:

    后置型:递增和递减操作是在包含他们的语句被求值之后才执行的!

    我们先来看一个例子:

    var num1 = 1; var num2 = 1; ++num1; num2++; alert(num1); // 2 alert(num2); // 2 alert(num1 == num2); // true

    从上面的例子我们可以看出:

    如果一条执行语句只存在前置型或后置型递增(也可以是递减)操作符那么并不会改变这条操作语句的结果

    但是!

    当语句中还包含其他操作时,上述的区别救会非常的明显了!

    如:

    var num1 = 2; var num2 = 20; var sum1 = num1-- + num2; // 等于22 var sun2 = num1 + num2; // 等于21

    出现这个问题的根源在于:

    变量 sum1 的值,等于 num1 的原始值(2)再加上 num2 的值(20)求得的,在执行完这条执行语句后,递减操作才会执行(即,此时,变量 num1 的值为 1);

    而变量 sum2 的值,是使用了 num1 递减后的值(1)再加上 num2 的值(20)求得的。

    由此,我们可以再总结一个规律,即:后置型,变量先不变(先使用原始值),待执行语句完成后,再执行递增或递减操作!

     

    综上所述,无论递增还是递减操作符,请一定牢记下面这两句话:

    前置型,变量先执行递增和递减操作,它的值会立即改变!

    后置型,变量先不变(先使用原始值),待执行语句完成后,再执行递增或递减操作!

                                            ————以上知识点来源于《JavaScript高级程序设计(第三版)》

    最新回复(0)