1.乘性操作符
(1)乘法:符号 * ,用于两个数值计算。遵循如下规则:
- 操作数都是数值,执行正常的乘法计算。两个正数相乘为正数,负数相乘为正数。
- 一个操作数为NaN,结果为NaN
- Infinity * 0,结果为NaN
- Infinity * 非0,结果Infinity或-Infinity,取决于非0的符号
- Infinity * Infinity ,结果Infinity
- 一个操作数不是数值,先使用Number()方法将其转换为数值,再使用以上规则。
(2)除法:符号 /,与 * 相似,规则如下:
- 操作数都是操作数都是数值,执行正常的除法计算。两个正数相乘为负数,负数相除为负数,一个有符号,一个无符号,结果为负数
- 一个操作数为NaN,结果为NaN
- Infinity /Infinity ,结果为NaN
- 零被零除,结果为NaN
- 非0值被零除,结果四Infinity或-Infinity,符号取决于非0的符号。
- Infinity被任何非零值出,结果Infinity或-Infinity,符号取决于非零的符号
- 如果一个操作数不是数值,调用Number()转换为数值,在应用以上规则。
(3)求模:符号 % ,如var result = 25 % 5 ; //结果为1
.规则类似 * , / 。
2.加性操作符
(1)加法 :符号 + ,不只用于数值计算,有一定的转换规则,如下:
- 一个操作数为NaN,结果为NaN
- Infinity + Infinity = Infinity
- -Infinity +(-Infinity) = -Infinity
- +0+(+0) = +0
- -0+(-0) =-0
- +0+(-0) =+0
当一个操作数为字符串时遵循如下规则:
- 如果两个操作数都是字符串,将两个字符串拼接。
- 只有一个操作数值字符串,则将另一个数值转换为字符串,尽心字符串拼接。
var result = 1 +1 ; // 2
var result2 = 1 +"1" ; // "11"
var result3 = "ab"+"1"; //"ab1"
var result4 = "1+1 = " +(1+1) ; //"1+1 = 2"
var reslut5 = "1+1 = "+1+1; //"1+1 = 11"
(2)减法:符号 - ,不只用于数值计算,有一定的转换规则,如下:
- 一个操作数为NaN,结果为NaN
- Infinity - Infinity = Infinity
- Infinity -(-Infinity) =NaN
- Infinity+(-Infinity) = NaN
- +0-(+0) = +0
- -0-(-0) =+0
- -0-(+0) =-0
- 如果一个操作数是字符串、布尔值、null或undefined,先调用Number()方法,转换为数值,再应用以上规则进行数值运算,如果转换后的结果是NaN,则结果就是NaN
- 如果一个操作数是对象,则调用对象的valueof()方法 (或者toString()方法) 以取得表示操作数的数值,在应用以上规则进行运算,如果转化后的结果是NaN,则结果就饿会死NaN。
var s1 = 5- true; // 4
var s2 = NaN -1; //NaN
var s3 = 5- ""; //0 ,""转为0
var s4 = 5 -"2" ; // 3 ,"2"转为2
var s5 = 5 -null ; //5,null 转为0```
3. 关系操作符
关系操作符有 > ,<,<=,>=
- 正常的数值关系比较,和数学一样。
- 若是字符串之间的比较,我们需要清楚操作数之间比较的是他们相对应的ASCII码
- 若是字符串和数值比较,字符串转换为数值在进行数值比较NaN与任何相比较都是false
var s1 = 6 < 4 ; //false
var s2 = "apple" > "orange"; //false
var s3 = "apple"<"Zero" ;//true,小写字母的字符编码全大于大写字母
var s4 = "23"<3; //false,"23" 转为23
var s5 = "asb"<2 ; //false,"asb" 转为NaN
欢迎大家一起讨论,进步!!!