一、加性操作符
1.加法运算符
...
<body>
<script>
alert(1+2);
alert(1 + '333');
alert(NaN + 2);
alert(1 + null);
alert(1 + true);
alert(1 + false);
alert(1 + undefined);
</script>
</body>
...
注意
1.当Number型、null、布尔型、undefined、NaN的操作数遇到String型的操作数时,都会进行隐式类型转换——String(XXX),此时+号都是起到字符串拼接的作用。
2.当仅有1个操作数时:
操作数类型 | 前面带+号(进行隐式类型转换) | 前面不带+号 |
---|
null | 0,即Number(null) | null |
true | 1,即Number(true) | true |
false | 0,即Number(false) | false |
undefined | NaN,即Number(undefined) | undefined |
NaN | NaN,即Number(NaN) | NaN |
2.减法运算符
<body>
<script>
alert(1 - 2);
alert(1 - (-2));
alert(1 - '333');
alert(NaN - 2);
alert(1 - null);
alert(1 - true);
alert(1 - false);
alert(1 - undefined);
</script>
</body>
...
注意
1.当仅有1个操作数时:
操作数类型 | 前面带 - 号(进行隐式类型转换) | 前面不带 - 号 |
---|
String | -Number(String) | String |
null | 0,即-Number(null) | null |
true | -1,即-Number(true) | true |
false | 0,即-Number(false) | false |
undefined | NaN,即Number(undefined) | undefined |
NaN | NaN,即Number(NaN) | NaN |
二、乘性操作符
乘性操作符 |
---|
1.乘法操作符 |
2.取模操作符 |
3.除法操作符 |
1.当有2个操作数,且其中1个为Number型时:
| 乘法操作符 | 取模操作符 | 除法操作符 |
---|
Number | 一般乘法运算 | 一般取模运算 | 一般除法运算 |
String(纯数值型) | 关于Number的隐式类型转换 + 一般乘法运算 | 关于Number的隐式类型转换 + 一般取模运算 | 关于Number的隐式类型转换 + 一般除法运算 |
String(非纯数值型) | NaN | NaN | NaN |
null | 关于Number的隐式类型转换 + 一般乘法运算 | 关于Number的隐式类型转换 + 一般取模运算 | 关于Number的隐式类型转换 + 一般除法运算 |
true | 关于Number的隐式类型转换 + 一般乘法运算 | 关于Number的隐式类型转换 + 一般取模运算 | 关于Number的隐式类型转换 + 一般除法运算 |
false | 关于Number的隐式类型转换 + 一般乘法运算 | 关于Number的隐式类型转换 + 一般取模运算 | 关于Number的隐式类型转换 + 一般除法运算 |
undefined | NaN | NaN | NaN |
NaN | NaN | NaN | NaN |
三、递增递减运算符
此处以变量i为例:
| 单个数值计算 | 在运算式中 |
---|
i++ | i 的值+1 | 先 i 的值+1,再进行式子运算 |
i- - | i 的值-1 | 先 i 的值-1,再进行式子运算 |
++i | i 的值+1 | 先拿 i 原值进行式子运算,再 i 的值+1 |
- -i | i 的值-1 | 先拿 i 原值进行式子运算,再 i 的值-1 |