![现代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=1739539053-kDvOgmSQtEwlqEGp5qfxkTqBbpOpFIJE-0-d860ef6fd2ff540f2fbbdcdd9e7bf6f3)
在数学中,与加法互为逆运算的是减法,JavaScript中使用符号“-”来进行减法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_69100.jpg?sign=1739539053-7g5y6k6drLM7oYu5YjKmckZcd1JVSg8x-0-729d1ec7cf52c52a1a0647bfdbcc80e2)
减法运算符有一点非常特殊,如果进行减法运算的两个操作数中有字符串类型,且其中的字符串类型可以转换为数字,则JavaScript会自动将其转换为数字再进行减法运算。但如果其中有字符串不能转换为数字,则计算结果为NaN,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67204.jpg?sign=1739539053-Hk2qIvDoBmhw7qn3euJpZ7Qp3dv0wLqy-0-154b70889af83b7065a6376f49bd99f2)
针对一些特殊值的减法运算,JavaScript中也定义了一些规则,如下:
(1)如果某个操作数是NaN,则运算的结果为NaN。
(2)正无穷值减去正无穷值,结果为NaN。
(3)负无穷值减去负无穷值,结果为NaN。
(4)正无穷值减去负无穷值,结果为正无穷值。
(5)负无穷值减去正无穷值,结果为负无穷值。
示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67205.jpg?sign=1739539053-SExbvhel3j3OVte79woEFZK86WSlapz4-0-204c81ad16460fa3d9068638d68549fb)
当符号“+”与符号“-”作为一元运算符时,它就成了正号运算符与负号运算符。对数字进行正号或负号运算时,正号运算会保持数字的正负性,负号运算会改变数字的正负性,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67206.jpg?sign=1739539053-NEE4s7pCBVS4Pt6DuNHlIxPfI0G3jG25-0-aad28d106a1c520f9764366c32abd558)
正负运算符还有一个很实际的用途,即可以将字符串值强制转成数字值,这在开发中十分常用。示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45a.jpg?sign=1739539053-iaJtO8clBYzjYWXk0a8TJARZYaNhuxrY-0-109b8cada337088f738e5ecd9e99f00b)
ECMAScript中使用乘法运算符“*”来进行乘法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67212.jpg?sign=1739539053-Q9MAraEZv8hzf5xBL4oa6iZYgEK964qA-0-ae0412b92b3a0f7cc4d23dd5cc3e66dd)
对于乘法运算,也存在下面几条特殊的规则:
(1)如果某个操作数是NaN,则结果为NaN。
(2)无穷值乘以0,结果为NaN。
(3)无穷值乘以0以外的其他数字,结果为无穷值。
(4)无穷值乘以无穷值,结果为无穷值。
示例代码如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67213.jpg?sign=1739539053-0punMCjtAqKcuNmJPgxfAim52j8fRad6-0-737cf9160cb11125c472836829393b63)
运算符“/”在ECMAScript中用来进行除法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67214.jpg?sign=1739539053-0waE40k63X2vTOwRk48XGcnAutWJjCz5-0-5366de8e7e72c03f8724b76e41715e4b)
除法运算符对于特殊值运算的规则如下:
(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=1739539053-PIksiqJDBiAwwcwc3UapCI84Gv9h9DrI-0-9e1909c219b0e9f6188bad3533658799)
ECMAScript中还支持求余运算,取余运算也叫取模运算。符号“%”为取模运算符。示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P46_67216.jpg?sign=1739539053-G9abSIicc5pPKsCrbtNG4ZM4cSiLv7Sf-0-152f684a377e4fe99bcd5e09c6d04856)
对于特殊值的取模运算,有如下规则:
(1)无穷值对任何值取模结果都是NaN。
(2)非无穷值对无穷值取模结果为非无穷值本身。
(3)0对任何数取模结果都是0。
(4)任何数对0取模结果都是NaN。
示例代码如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P46_67219.jpg?sign=1739539053-1TvQEREEljvAL9aPEq49LVMOSr7HWRIm-0-8874b55721097e147ab364e104e817c5)
需要注意,在很多编程语言中,取模运算都不可以以浮点数作为操作数。JavaScript是一种相对特殊的语言,它并没有对浮点数的取模运算做太严格的控制。