![现代JavaScript编程:经典范例与实践技巧](https://wfqqreader-1252317822.image.myqcloud.com/cover/657/26793657/b_26793657.jpg)
2-12 算术运算符
运算符是用来执行程序代码运算的。一个完整的表达式应该由两部分组成:操作数与运算符。例如,简单的加法表达式“1+2”中,数字“1”和数字“2”都是操作数,符号“+”是加法运算符,其作用是将前后两个操作数进行加法运算。
在ECMAScript中,运算符可以分为如下几类:
(1)算术运算符。
(2)赋值运算符。
(3)关系运算符。
(4)逻辑运算符。
(5)位运算符。
(6)自增、自减、条件、逗号等特殊运算符。
其中,算术运算符用来做常见的数学运算,例如加、减、乘、除等。符号“+”是ECMAScript中的加法运算符,数字或者字符串都可以使用“+”运算符进行相加操作。示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P43_69096.jpg?sign=1739564711-YI09YT0xdNCB9L0RS7sOuHp2GKOIC3AM-0-ad26667a8f2de351fed40384b2634b15)
在数学中,与加法互为逆运算的是减法,JavaScript中使用符号“-”来进行减法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_69100.jpg?sign=1739564711-TokrI7KWCDTToFIOop4QlyyEvDHsV2Nd-0-68e3264c456a1e16de6f122bd790925d)
减法运算符有一点非常特殊,如果进行减法运算的两个操作数中有字符串类型,且其中的字符串类型可以转换为数字,则JavaScript会自动将其转换为数字再进行减法运算。但如果其中有字符串不能转换为数字,则计算结果为NaN,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67204.jpg?sign=1739564711-rSbjfViSwH6lobfxlH0uh7O1ZKpUCQFj-0-80a01f3819f51c88b3b290b6f947499a)
针对一些特殊值的减法运算,JavaScript中也定义了一些规则,如下:
(1)如果某个操作数是NaN,则运算的结果为NaN。
(2)正无穷值减去正无穷值,结果为NaN。
(3)负无穷值减去负无穷值,结果为NaN。
(4)正无穷值减去负无穷值,结果为正无穷值。
(5)负无穷值减去正无穷值,结果为负无穷值。
示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67205.jpg?sign=1739564711-hqgCAgvw5BN1EFkcXAiLG0vrlxqQhqfq-0-0bb4a3e28a85fbc5b0e88bb0ea238ca1)
当符号“+”与符号“-”作为一元运算符时,它就成了正号运算符与负号运算符。对数字进行正号或负号运算时,正号运算会保持数字的正负性,负号运算会改变数字的正负性,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67206.jpg?sign=1739564711-TYp0xPCbMVMqqzQDXZYZ7QKzzuod9eMg-0-da40e168e0470e066897d0dba8c9de55)
正负运算符还有一个很实际的用途,即可以将字符串值强制转成数字值,这在开发中十分常用。示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45a.jpg?sign=1739564711-Tl5BQIDlXqfW78QDrj2MUTbfsTht5nj7-0-44288f5009b11358f73d238e350942b9)
ECMAScript中使用乘法运算符“*”来进行乘法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67212.jpg?sign=1739564711-HjvwiRiJuI6VZal6A88aqyfpEyZdOtZg-0-09cd91114e7def2d3c4e87c7ff21e25d)
对于乘法运算,也存在下面几条特殊的规则:
(1)如果某个操作数是NaN,则结果为NaN。
(2)无穷值乘以0,结果为NaN。
(3)无穷值乘以0以外的其他数字,结果为无穷值。
(4)无穷值乘以无穷值,结果为无穷值。
示例代码如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67213.jpg?sign=1739564711-RAOncwhOcXorg8vx95oDFmFAqvNs0WGI-0-f57738b387a1214e20b0cf521004a148)
运算符“/”在ECMAScript中用来进行除法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67214.jpg?sign=1739564711-tZYteNXgqd6bGl2AB0lG8XEKXocgzHQn-0-2f00d5c80a8d0e9af4b721da0c6d158e)
除法运算符对于特殊值运算的规则如下:
(1)如果某个操作数是NaN,则结果为NaN。
(2)无穷值除以无穷值,结果为NaN。
(3)无穷值除以非无穷值,结果为无穷值。
(4)非无穷值除以无穷值,结果为0。
(5)任何数除以0,结果为无穷值。
(6)0除以任何数,结果为0。
示例代码如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P46_67215.jpg?sign=1739564711-eBt9HFrDZsjW7dLqepXWIz8pdhJEIaDF-0-501060673e3e358bfea70699aa539c89)
ECMAScript中还支持求余运算,取余运算也叫取模运算。符号“%”为取模运算符。示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P46_67216.jpg?sign=1739564711-T2btJQ8AZ9E1k3UeirpqIzPrKal2qDCl-0-ee629578be054f2062c296f0adb00904)
对于特殊值的取模运算,有如下规则:
(1)无穷值对任何值取模结果都是NaN。
(2)非无穷值对无穷值取模结果为非无穷值本身。
(3)0对任何数取模结果都是0。
(4)任何数对0取模结果都是NaN。
示例代码如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P46_67219.jpg?sign=1739564711-IKHa3kMeCweOnugoBGGh1HfAzijzz8VR-0-0799995181d1b19e9919a92414172a45)
需要注意,在很多编程语言中,取模运算都不可以以浮点数作为操作数。JavaScript是一种相对特殊的语言,它并没有对浮点数的取模运算做太严格的控制。