![现代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=1739293701-lS3NS4ZWGIX2gSzoeQuAeOJN5dJPwhdM-0-bf2ccf9382e45b2993db7709fdb0e0cc)
在数学中,与加法互为逆运算的是减法,JavaScript中使用符号“-”来进行减法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_69100.jpg?sign=1739293701-Z9kzWM1AiVdEjq1pfaiXFlzUSlry3aOj-0-2ff18fa28b387ae3dde6958e83f7d331)
减法运算符有一点非常特殊,如果进行减法运算的两个操作数中有字符串类型,且其中的字符串类型可以转换为数字,则JavaScript会自动将其转换为数字再进行减法运算。但如果其中有字符串不能转换为数字,则计算结果为NaN,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67204.jpg?sign=1739293701-qzosHqdfkmjKWCCyTLhrb7ClYuDxDdvw-0-a4f9538a2fd5f99c3c4cb31a444cf146)
针对一些特殊值的减法运算,JavaScript中也定义了一些规则,如下:
(1)如果某个操作数是NaN,则运算的结果为NaN。
(2)正无穷值减去正无穷值,结果为NaN。
(3)负无穷值减去负无穷值,结果为NaN。
(4)正无穷值减去负无穷值,结果为正无穷值。
(5)负无穷值减去正无穷值,结果为负无穷值。
示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67205.jpg?sign=1739293701-mBD190yFQvejqfqIYh4PE4eFMXIOiyr3-0-ff172ff1a0724829a33eb33e06e23db1)
当符号“+”与符号“-”作为一元运算符时,它就成了正号运算符与负号运算符。对数字进行正号或负号运算时,正号运算会保持数字的正负性,负号运算会改变数字的正负性,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67206.jpg?sign=1739293701-JkEns4il5mEEWfwzblGBfcEU76A8BlOh-0-cccaee52238f049d03fae01a15a45acd)
正负运算符还有一个很实际的用途,即可以将字符串值强制转成数字值,这在开发中十分常用。示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45a.jpg?sign=1739293701-MZ33IGQ36c0OotDIWHCwQyPa2Gd5eJIj-0-b04d5ae82c84e7380e9cea701b7e7941)
ECMAScript中使用乘法运算符“*”来进行乘法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67212.jpg?sign=1739293701-8QWCY8dTkyJ2OeatgFI60hXuUxOTXYkj-0-48ae068dfbbc9506a4e0e00083eec156)
对于乘法运算,也存在下面几条特殊的规则:
(1)如果某个操作数是NaN,则结果为NaN。
(2)无穷值乘以0,结果为NaN。
(3)无穷值乘以0以外的其他数字,结果为无穷值。
(4)无穷值乘以无穷值,结果为无穷值。
示例代码如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67213.jpg?sign=1739293701-DlI5Kz8EdwKfqF2lcLJBg0xoFekLMY6m-0-17665de58650122d94bd76986fffdf3d)
运算符“/”在ECMAScript中用来进行除法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67214.jpg?sign=1739293701-cKn2vHRShTf9lVkixDu7tfjpJ27LxxNc-0-077130ec6a5365e8e8efa74b088a84cd)
除法运算符对于特殊值运算的规则如下:
(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=1739293701-Ny5AovvqnYInBhQY1JRaFx9OrHCOkVNV-0-434a3cb007080bb878c3e7dcdb5febbc)
ECMAScript中还支持求余运算,取余运算也叫取模运算。符号“%”为取模运算符。示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P46_67216.jpg?sign=1739293701-OcJHoEShGPSm1Fq1ZOP4E4AUz1X5jMQu-0-58306b35cebbb30621aa44d5a3b4095e)
对于特殊值的取模运算,有如下规则:
(1)无穷值对任何值取模结果都是NaN。
(2)非无穷值对无穷值取模结果为非无穷值本身。
(3)0对任何数取模结果都是0。
(4)任何数对0取模结果都是NaN。
示例代码如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P46_67219.jpg?sign=1739293701-APvW51bF5fjUX41KpRIuacO3FbbgjX7z-0-3f5ba88bdad91c323146924b63220fe0)
需要注意,在很多编程语言中,取模运算都不可以以浮点数作为操作数。JavaScript是一种相对特殊的语言,它并没有对浮点数的取模运算做太严格的控制。