加性操作符包括加法和减法。
- 1. 加法
var result = 1 + 2;
如果两个操作数都是数值,执行常规计算:
- 如果一个操作数是 NaN,则结果是 NaN;
- 如果是 Infinity 加 Infinity,则结果是 Infinity;
- 如果是 -Infinity 加 -Infinity,则结果是 -Infinity;
- 如果是 Infinity 加 -Infinity,则结果是 NaN;
- 如果是+0加+0,则结果是+0;
- 如果是-0加-0,则结果是+0;
- 如果是+0加-0,则结果是+0;
不过,如果一个操作数是字符串,那么就要应用如下规则:
- 如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来;
- 如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后将两个字符串拼接起来。
如果一个操作数是对象,数值或布尔值,则调用它们的toString()方法取得相应的字符串值,然后在应用前面关于字符串的规则。
对于undefined和null,则分别调用Sring()函数并取得字符串"undefined"和"null"。
var result1 = 5 + 5; //10
var result2 = 5 + "5"; //55
- 2. 减法
var result = 2 - 1;
如果两个操作数都是数值,执行常规计算:
- 如果一个操作数是 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()方法将其转换为数值,然后在根据前面的规则执行减法计算。如果转换结果是NaN,则减法的结果是NaN;
- 如果有一个操作数是对象,则调用对象的valueOf()方法以取得表示该对象的数值。如果的得到的值是NaN,则减法结果是NaN。如果对象没有valueOf()方法,则调用其toString()方法并将得到的字符串转换为数值。
var result1 = 5 - true; //4
var result2 = NaN - 1; //NaN
var result3 = 5 - 3; //2
var result4 = 5 - " "; //5
var result5 = 5 - "2"; //3
var result6 = 5 - null; //5