九、数学运算符
9.1 概述
运算符是处理数据的基本方法,用来从现有的值得到新的值。
JavaScript 共提供10个算术运算符,用来完成基本的算术运算。
1 | 加法运算符: x + y |
减法、乘法、除法运算法比较单纯,就是执行相应的数学运算。
9.2 + 加法运算符
功能:
+符号左右两边都不是字符串时,为加法+符号左右两边只要有字符串,为连字符
1 | 3 + 5 // 8 |
注意,true在做加法运算的时候,会被当做1;false在做加法运算的时候,会被当做0:
1 | 3 + true; // 4 |
9.3 –减法运算符
注意,减法没有字串符的顾虑了,纯数字字串符一律当作数字处理:
1 | 8 - 3 // 5 |
注意,true在做减法运算的时候,会被当做1;false会被当做0:
1 | 3 - true; // 2 |
特别的,如果这个字符串“不干净”,不是纯的数字字符串,此时结果一律为NaN:
1 | “8年” – 3 //NaN |
-可以当作负号使用:
1 | 3 - -2 //5 |
9.4 *乘法 /除法 运算符
乘法和除法都不需要考虑字符串的顾虑,纯数字字符串能够被当做数字处理:
1 | 8 / 4 // 2 |
不纯的字符串,当作NaN处理:
1 | “8年” * 2 // NaN |
乘除法的优先级相同,但是都比加减法优先级高:
1 | 1 + 2 * 3 // 7 |
如果要提升加减优先级,一律使用小括号:
1 | (1 + 2)* 3 // 9 |
注意,0当除数的时候:
非零除以0,结果Infinity
0除以0,结果NaN

9.5 乘方 开方
Math是JS中内置的一个对象,里面蕴含了很多的数学运算
- 乘方
Math.pow( , ):
1 | Math.pow(2,3); //2*2*2 8 |
从 ECMAScript 6 开始新增加了求幂运算,使用两个*号代表求幂。以此可以代替以前的Math.pow()方法
指数运算符(**)完成指数运算,前一个运算子是底数,后一个运算子是指数:
1 | 2 ** 4 // 16 |
注意,指数运算符是右结合,而不是左结合。即多个指数运算符连用时,先进行最右边的计算:
1 | // 相当于 2 ** (3 ** 2) |
上面代码中,由于指数运算符是右结合,所以先计算第二个指数运算符,而不是第一个。
- 开方
Math.sqrt():
1 | Math.sqrt(81) //根号下81 9 |
案例:会将一个数学算式,转为计算机的写法:
注意圆括号别看错了:
1 | <script> |

9.6 取余运算符%
%就是无视除法的结果,只看余数。是编程中特别常用的符号。
场景1:判断是否是偶数
只需要看这个数字%2的结果是不是0,就能判断这个数字是不是偶数
1 | 6 % 2 // 0 |
场景2:取余运算能够形成周而复始的情形
1 | 0 % 4 // 0 |
场景3:能够帮助我们从一个精灵图片中取元素
比如下图,每排8个精灵元素。现在要取第17号,它就是编号为2排的编号为1的那个。注意,所有序号都是从0开始数。

取余运算的优先级和乘除相等
1 | 5 * 4 % 10 // 0 |
9.7 自增运算符 ++ 自减运算符- -
能够让a自增:
a++;
等价于
a = a + 1;
比如:
1 | <script> |
但真正了解a++不容易:
1 | <script> |
a++,会“先用再加”。也就是说,会先把a的原数输出了,然后a自增1。
1 | <script> |
为了解决不便利的问题,可以把++前置,此时就是++a“先加再用”。
1 | <script> |
例1:
1 | <script> |
例2:

例3:
1 | <script> |