![现代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=1739252436-5RIHOfSR1T7OUTz7Di2x9c7DxnoxlqsK-0-20577c557d9bc9fc7f3ecf85f255a051)
在数学中,与加法互为逆运算的是减法,JavaScript中使用符号“-”来进行减法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_69100.jpg?sign=1739252436-wEnUXjTdezkRvLb9zN8EiGoRGJjiK2pQ-0-e65370987fd7545fb27098782384d3af)
减法运算符有一点非常特殊,如果进行减法运算的两个操作数中有字符串类型,且其中的字符串类型可以转换为数字,则JavaScript会自动将其转换为数字再进行减法运算。但如果其中有字符串不能转换为数字,则计算结果为NaN,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67204.jpg?sign=1739252436-TzHEgCSmzw1hlnDJidvzOeB6dzzbNxiB-0-36e18593b455f65abf56797cf4bf82ff)
针对一些特殊值的减法运算,JavaScript中也定义了一些规则,如下:
(1)如果某个操作数是NaN,则运算的结果为NaN。
(2)正无穷值减去正无穷值,结果为NaN。
(3)负无穷值减去负无穷值,结果为NaN。
(4)正无穷值减去负无穷值,结果为正无穷值。
(5)负无穷值减去正无穷值,结果为负无穷值。
示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67205.jpg?sign=1739252436-3eXjtCfmYNMEpr6Y0km1YW9RWn1YD8H3-0-6294ff01b2ce254ae061bffe648567e4)
当符号“+”与符号“-”作为一元运算符时,它就成了正号运算符与负号运算符。对数字进行正号或负号运算时,正号运算会保持数字的正负性,负号运算会改变数字的正负性,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67206.jpg?sign=1739252436-Lty7sdNkALYNnFlTnOsgusvqa6vQKD4C-0-8ead0e8e96d35f0c23b2d39b5340dd05)
正负运算符还有一个很实际的用途,即可以将字符串值强制转成数字值,这在开发中十分常用。示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45a.jpg?sign=1739252436-mf5irsH9fquuHmAbxfl2gGONx6V6DscI-0-b370ca5310ae748863629bd099c79c32)
ECMAScript中使用乘法运算符“*”来进行乘法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67212.jpg?sign=1739252436-xzgbNhU9k4joPxNtmSzChsWvvg9kadJp-0-e3be201584074f29eefd496266ed287b)
对于乘法运算,也存在下面几条特殊的规则:
(1)如果某个操作数是NaN,则结果为NaN。
(2)无穷值乘以0,结果为NaN。
(3)无穷值乘以0以外的其他数字,结果为无穷值。
(4)无穷值乘以无穷值,结果为无穷值。
示例代码如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67213.jpg?sign=1739252436-NKk1a8AWdBiba5chhxY1cxjF3cojC2xB-0-23bdfa6272311b93f476a487fd633dcc)
运算符“/”在ECMAScript中用来进行除法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67214.jpg?sign=1739252436-mvhAZ7MVmQJkyYiWHEf4fBVUno7zNSKA-0-a7a8cd7ea3bb6b37b3d6bfdd198e56d7)
除法运算符对于特殊值运算的规则如下:
(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=1739252436-7BpLEJBw0HjWG7B1Okwu2kDcfLjeJkhy-0-654ca7d17cd782cf40ed1f6caf8942d0)
ECMAScript中还支持求余运算,取余运算也叫取模运算。符号“%”为取模运算符。示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P46_67216.jpg?sign=1739252436-Xqwzcj7MNng5TKEJeapNzd7VsND8ZqRU-0-4489c320050e86165b1c52df0e81a301)
对于特殊值的取模运算,有如下规则:
(1)无穷值对任何值取模结果都是NaN。
(2)非无穷值对无穷值取模结果为非无穷值本身。
(3)0对任何数取模结果都是0。
(4)任何数对0取模结果都是NaN。
示例代码如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P46_67219.jpg?sign=1739252436-glM8lyqmRalzf6xrNCAQuZ8RPSUnu9w7-0-4beaf70163cae1e264809283d5bb2ad7)
需要注意,在很多编程语言中,取模运算都不可以以浮点数作为操作数。JavaScript是一种相对特殊的语言,它并没有对浮点数的取模运算做太严格的控制。