JavaScript中的赋值运算符很常见,常见的运算符有“=”“*=”“+=”“-=”等。赋值运算符分为:二元赋值运算符和一元赋值运算符两类,下面将对这两类赋值运算符分别进行讲解。
前文介绍过,等号“=”在JavaScript中表示赋值,此外,JavaScript还提供了很多赋值运算符,如表4-2所示。
表4-2 JavaScript中的赋值运算符
本节主要介绍二元赋值运算符的相关内容。
等号“=”是简单赋值运算符,代表赋值,简单地说,就是把等号“=”右边的值赋给左边的变量。需要注意的是,等号“=”左边只能是变量或对象属性,等号“=”右边可以是任意类型的任意值,只有这样等号“=”才能发挥赋值的作用。比如:
本段代码使用等号“=”将数字1赋值给变量sum1,字符串“尚硅谷”赋值给变量sum2,故输出结果为1和尚硅谷。
运算符“+=”、“-=”、“*=”、“/=”和“%=”都是复合赋值运算符,它们可以被看作变量自身变化的简写形式,比如:
本段代码先将变量a赋初值10,表达式“a+=2”代表a在自身基础上加2,等价于“a=a+2”,故输出结果为12。
此时,“-=”、“*=”、“/=”和“%=”的含义就显而易见了,下面举例说明:
本段代码列举了四种复合赋值运算符,对变量a分别进行了累减、累乘、累除和取余的操作,这段代码等价于:
转换后的代码已经十分清晰,不做过多讲解。
JavaScript为开发者提供了自增“++”和自减“--”两个运算符,分别表示自增1和自减1。自增“++”运算符和自减“--”运算符只能和变量组成表达式,比如:
这段代码定义了变量a赋值为10,首先通过“++a”使变量a自增1,输出结果11;然后在结果11的基础上使变量a自减1,输出结果10。
你可能会疑惑,自增“++”运算符和自减“--”运算符只能写在变量的前面吗?
其实,自增运算符和自减运算符各有两个版本:前置型和后置型,它们和Java中的自增运算符和自减运算符是相同的。在JavaScript中,前置型是在运算之前进行计算,后置型是在操作变量后进行计算。有一个口诀可以帮助你了解前置型和后置型,“++”在后,先赋值,后“++”;“++”在前,先“++”,后赋值。比如:
这段代码与上面代码的输出结果完全相反,根据口诀:“++”在后,先赋值,后“++”,当执行第二行代码时,先输出当前a的值,再进行自增,因此第二行输出结果10。同理,第三行代码也是先输出当前a的值,再进行自减,此时变量a已经自增1了,因此第三行输出结果11。但是要知道,这段代码执行后变量a的值是10,因为“--”在后,所以先输出值,再进行自减运算。
每次操作都是让变量的值自增1或自减1。自增“++”运算符和自减“--”运算符是一元运算符,用法如下:
运行这段代码后输出结果12和10。++a和a++等同于a=a+1;--a和a--等同于a=a-1。在这里需要牢记,前置型和后置型虽然都等同于a=a+1和a=a-1,但是它们运算的时候是不一样的,++a是先自增,让a增加1,再参与其他运算;而a++是先让a参与其他运算,再自增,让a增加1。同理,--a是先自减,让a减少1,再参与其他运算;而a--是先让a参与其他运算,再自减,让a减少1。