这是我参与11月更文挑战的第15天,活动详情查看:2021最后一次更文挑战
JavaScript 用于操作数据值的操作符包括算术操作符、位操作符、关系操作符和相等操作符,它们能够适用于很多值,如字符串、数字值、布尔值。
加性操作符
1. 加法
加法操作符由一个加号 +
表示;
var result = 1 + 1;
特殊值处理规则:
- 有一个操作数是
NaN
,结果是NaN
; Infinity
加Infinity
,结果是Infinity
;-Infinity
加-Infinity
,结果是-Infinity
;Infinity
加-Infinity
,结果是NaN
;- +0 加 +0,结果是+0;
- -0 加 -0,结果是-0;
- +0 加 -0,结果是+0;
- 两个操作数都是字符串,第一个操作数和第一个操作数拼接;
- 只有一个操作数是字符串,另一个操作数转换成字符串,然后两个字符串拼接;
2. 减法
减法操作符由一个减号 -
表示;
var result = 1 - 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()
转成数值;
var result1 = 5 - "1"; // 4
var result2 = 5 - null; // 5
关系操作符
关系操作符有:小于 <
、大于 >
、小于等于 <=
、大于等于 >=
;用于对两个值比较;
var result1 = 2 > 1;
特殊值处理规则:
- 两个操作数都是字符串,比较两个字符串对应的字符编码值;
- 一个操作数是布尔值,先转换为数值,再执行比较;
相等操作符
相等和不相等——先转换在比较,全等和不全等——仅比较而不转换;
1. 相等不相等
相等操作符由两个等于号 ==
表示,不相等操作符由叹号后跟等于号 !=
表示;
基本规则:
- 有一个操作数是布尔值,先转换为数值,false 转换为0,true 转换为1;
- 有一个操作数是字符串,另一个是数值,先将字符串转换为数值;
null
和undefined
是相等的;NaN
和NaN
是不相等的;
表达式 | 值 |
---|---|
null == undefined | true |
"NaN" == NaN | false |
5 == NaN | false |
NaN == NaN | false |
NaN != NaN | true |
false == 0 | true |
true == 1 | true |
true == 2 | false |
undefined ==0 | false |
null == 0 | false |
"5" == 5 | true |
2. 全等和不全等
全等操作符由3个等于号 ===
表示,不全等操作符有一个叹号和两个等于号 !==
表示;
var result1 = ("10" == 10); // true
var result2 = ("10" === 10); // false,数据类型不相同