- 现代JavaScript编程:经典范例与实践技巧
- 张益珲
- 1157字
- 2025-02-19 20:46:05
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=1739982388-YdFFvPLtNGb62ClturdQNb6T2OPLhIVQ-0-918e7f5d2f7d9a9bf28edc1b98f31c18)
在数学中,与加法互为逆运算的是减法,JavaScript中使用符号“-”来进行减法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_69100.jpg?sign=1739982388-GWqF46lD7RhqVUxjZ1QQXxA0GRdp7v2g-0-8a80288d95046953a3f3c96b4fd1f235)
减法运算符有一点非常特殊,如果进行减法运算的两个操作数中有字符串类型,且其中的字符串类型可以转换为数字,则JavaScript会自动将其转换为数字再进行减法运算。但如果其中有字符串不能转换为数字,则计算结果为NaN,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67204.jpg?sign=1739982388-NCAhUsJcxl2JL3FlNmbdbk1uuTXaJlfJ-0-cf524c01e9cc8737f2f0454e3717c769)
针对一些特殊值的减法运算,JavaScript中也定义了一些规则,如下:
(1)如果某个操作数是NaN,则运算的结果为NaN。
(2)正无穷值减去正无穷值,结果为NaN。
(3)负无穷值减去负无穷值,结果为NaN。
(4)正无穷值减去负无穷值,结果为正无穷值。
(5)负无穷值减去正无穷值,结果为负无穷值。
示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67205.jpg?sign=1739982388-FiVp1OSUX9Bl4Py0yIXfgmRR1cGPyQ44-0-1539ae211fc802eb5c83ac56a90f5f83)
当符号“+”与符号“-”作为一元运算符时,它就成了正号运算符与负号运算符。对数字进行正号或负号运算时,正号运算会保持数字的正负性,负号运算会改变数字的正负性,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P44_67206.jpg?sign=1739982388-WJ1Op38w8jkJmpZovjfUiLXFHu7U0Ps9-0-3509199c9735acb5a0257bff24acc4ad)
正负运算符还有一个很实际的用途,即可以将字符串值强制转成数字值,这在开发中十分常用。示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45a.jpg?sign=1739982388-jdVs2jqlQAO76tWDIItVmF8Aw6qX7EIe-0-0aec9bc3908169540925d129ef236878)
ECMAScript中使用乘法运算符“*”来进行乘法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67212.jpg?sign=1739982388-2w61yXZe862XaVZaOwbkeTE3z9OU58Wn-0-a571ad611a06642f4151fe66212266b5)
对于乘法运算,也存在下面几条特殊的规则:
(1)如果某个操作数是NaN,则结果为NaN。
(2)无穷值乘以0,结果为NaN。
(3)无穷值乘以0以外的其他数字,结果为无穷值。
(4)无穷值乘以无穷值,结果为无穷值。
示例代码如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67213.jpg?sign=1739982388-JA2qI1UAjZWj6raFnhgXXE0gmtilgueg-0-bf05b26fd485ed3a739c1b1710c28b41)
运算符“/”在ECMAScript中用来进行除法运算,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P45_67214.jpg?sign=1739982388-RALSDugKb0G9yV9g4df8hhuBKrJTLfXU-0-c86b1053ba4bc2882a752f9a1740c0da)
除法运算符对于特殊值运算的规则如下:
(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=1739982388-V2BDJYQw0b2Mywj1mWHXnJe8LJI82ezx-0-5160ca61fce102f60c2140ac0462f184)
ECMAScript中还支持求余运算,取余运算也叫取模运算。符号“%”为取模运算符。示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P46_67216.jpg?sign=1739982388-QuQ1Nc6CAHhPbqhWZ8KIhDNp39DZAJrK-0-30a6c1e1622b30e895464bb76b6aa796)
对于特殊值的取模运算,有如下规则:
(1)无穷值对任何值取模结果都是NaN。
(2)非无穷值对无穷值取模结果为非无穷值本身。
(3)0对任何数取模结果都是0。
(4)任何数对0取模结果都是NaN。
示例代码如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P46_67219.jpg?sign=1739982388-qD5Xw9KoYlPXw84wf8WsxADFXQYzORwi-0-3fbbee5486946b0259fbea804d75e58f)
需要注意,在很多编程语言中,取模运算都不可以以浮点数作为操作数。JavaScript是一种相对特殊的语言,它并没有对浮点数的取模运算做太严格的控制。