JavaScript算术运算符
加法
加法(+)运算的用法如下所示:
var result = 1 + 2; //3
如果加法操作符两边都是数值,执行常规的加法运算,然后根据下列规则返回结果:
- 如果有一个操作数是NaN,则结果是NaN。
- 如果是Infinity加Infinity,则结果是Infinity。
- 如果是-Infinity加-Infinity,则结果是-Infinity。
- 如果是Infinity加-Infinity,则结果是NaN。
- 如果是+0加+0,则结果是+0。
- 如果是-0加-0,则结果是-0。
- 如果是+0加-0,则结果是+0。
不过,如果有一个操作数是字符串,那么就应该遵循下列规则:
- 如果操作数都是字符串,则将第一个操作数和第二个操作数拼接起来。
- 如果只有一个操作数是字符串,则将另一个操作数转化为字符串,然后再将两个恶字符串拼接起来。
- 如果有一个操作数对象、数值或布尔值,则调用它们的toString()方法取得相应的字符串值,然后再应用前面字符串的规制。对于null和undefined,分别调用String()方法取得字符串"undefined"和"null"。
举个例子:
var result = 5 + 5; //两个数值相加
console.log(result); //10
var result1 = 5 + "5"; //一个数值和一个字符串进行加法运算
console.log(result1); //"55"
减法
减法运算(-)用法如下所示:
var result = 2 - 1; //1
与加法操作符类似,JavaScript中的减法在处理个种数据的时候,同样遵循一些特殊规则:
- 如果减法操作符两边都是数值,执行常规的减法运算
- 如果有一个操作数是NaN,则结果是NaN。
- 如果是Infinity减Infinity,则结果是NaN。
- 如果是-Infinity减-Infinity,则结果是NaN。
- 如果是Infinity减-Infinity,则结果是Infinity。
- 如果是-Infinity减Infinity,则结果是-Infinity。
- 如果是+0减+0,则结果是+0。
- 如果是-0减-0,则结果是+0。
- 如果是-0减+0,则结果是-0。
- 如果一个字符串是字符串、布尔值、null或undefined,则现在后台调用Number()函数将其转换为数值,然后再根据上面的规则进行减法运算。如果调用Number()函数转换的结果是NaN,则运算的结果是NaN。
- 如果有一个操作数是对象,则调用valueOf()方法取得该对象的数值,如果得到的值是NaN,则减法运算的结果就是NaN,如果对象没有valueOf方法,则调用toString()方法并将得到的字符串转换为数值。举个例子:
var result1 = 5 - true;
var result2 = NaN - 1;
var result3 = 5 - 3;
var result4 = 5 - "";
var result5 = 5 - "2";
var result6 = 5 - null;
console.log(result1); //4,因为true转换为1
console.log(result2); //NaN
console.log(result3); //2
console.log(result4); //5,因为""被转换为0
console.log(result5); //3,因为"2"被转换为2
console.log(result6); //5,因为null被转换为0
乘法
乘法运算(*)用法如下所示:
var result = 3 * 5; //15
在处理特殊值的情况下,乘法遵循下列规则:
- 如果操作的数都是数值,执行常规的乘法运算
- 如果有一个操作数是NaN,则结果是NaN
- 如果是Infinity与0相乘,则结果是NaN
- 如果是Infinity与非0数相乘,则结果是Infinity或-Infinity,取决于有符号操作数的符号
- 如果Infinity与Infinity相乘,则结果为Infinity
- 如果有一个操作数不是数值,则在后台调用Number()函数将其转换为数值
除法
除法操作符(/)用法如下所示:
var result = 15 / 3;
console.log(result); //5
除法与乘法类似,也有特殊的处理规则:
- 如果操作的数都是数值,执行常规的除法运算
- 如果有一个操作数是NaN,则结果是NaN
- 如果是0与0相除,则结果是NaN
- 如果是非0有限数被0除,则结果是Infinity或-Infinity,取决于有符号操作数的符号
- 如果Infinity与Infinity相除,则结果为NaN
- 如果有一个操作数不是数值,则在后台调用Number()函数将其转换为数值
取余(求模)
取余运算用法如下所示:
var result = 10 % 3;
console.log(result); //1
取余与乘除类似,有以下特殊规则来处理特殊的值:
- 如果操作的数都是数值,执行常规的除法运算。返回除得的余数
- 如果被除数是无穷大值,而除数是有限大的值,则结果是NaN
- 如果被除数是有限大的值,而除数是0,则结果是NaN
- 如果Infinity被Infinity除,则结果是NaN
- 如果被除数是有限大的值而除数是无穷大的值,则结果是被除数
- 如果除数是零,则结果是零
- 如果有一个操作数不是数值,则在后台调用Number()函数将其转换为数值