+
,如 2 + 3
,注意但凡遇到字符串,则作拼接作用,如2 + '3'
、'2' + 3
、'2' + '3'
结果都是字符串 ‘23’;-
,如 2 - 3
;*
,如 2 * 3
;/
,如 2 / 3
;%
,如 3 % 2
,表示 3÷2 的余数;**
,如 3 ** 2
,表示 32。逻辑运算是好玩的,也是相对简单的,这里不展开叙述。
&&
)||
)!
)??
)位运算不常见,一般可用于解决内存效率问题、底层运算问题、加密问题等。
&
)|
)^
)~
)<<
)>>
)>>>
)true
或 false
;>
、<
、<=
、>=
、==
;===
,严格不相等 !==
,比如 0 !== ''
、null !== undefined
;null
、字符串、布尔值、NaN
、undefined
)。/* 与布尔值的比较 */
0 == false == '' // true
1 == true // true
0 !== false // true
/* null、NaN、undefined */
null == undefined // true
null !== undefined // true
null != NaN // true
null >= 0 // true,null 包含空、无或值未定的概念
/* 下面关于 null 判断结果都是 false
null == 0、null > 0、null < 0、null <= 0
*/
NaN != NaN // true,任何一个 NaN 实例都是独特的
undefined != 0 // true,undefined 的含义是未定义
/* 下面关于 undefined 判断结果都是 false
undefined > 0、undefined < 0、undefined == 0、undefined >= 0、undefined <= 0
*/
---------------
/* 字符串的比较:
比较字符的码值,从左到右比较,直到比较出结果 */
'abc' > 'abCD' // true
'abc' == 'abc' // true
=
;+=
、/=
、**=
等;||=
、??=
等;<<=
、&=
等;a = b = 2
。let a = 2;
a += 1 // a=3
a ^= 0b1 // a=1
++
,将变量与 1 相加;--
,将变量与 1 相减;let a = 100;
a ++; // 101
a --; // 100
'0' ++; // Error
+
,用于将数据转换成数字;-
,用于取一个数的负值。?:
,等效于一个简单的条件判断语句,可以像if
语句一样嵌套。+'12' // 12 - 数值
+'' // 0 - 数值
+true // 1 - 数值
/* 符号函数:如果x>0,返回1,否则-1 */
function sign(x) {
return x > 0 ? 1: -1; // x > 0 ? 1: -1 算是一个表达式,值取决于 ? 前面的条件
}
typeof
new
in
await
delete
void
instanceof
一张比较完整的汇总表,值越大优先级越高。
优先级 | 运算符类型 | 结合性 | 运算符 |
---|---|---|---|
19 | 分组 | n/a(不相关) | ( … ) |
18 | 成员访问 | 从左到右 | … . … |
18 | 需计算的成员访问 | 从左到右 | … [ … ] |
18 | new (带参数列表) | n/a | new … ( … ) |
18 | 函数调用 | 从左到右 | … ( … ) |
18 | 可选链(Optional chaining) | 从左到右 | ?. |
17 | new (无参数列表) | 从右到左 | new … |
16 | 后置递增 | n/a | … ++ |
16 | 后置递减 | n/a | … -- |
15 | 逻辑非 (!) | 从右到左 | ! … |
15 | 按位非 (~) | 从右到左 | ~ … |
15 | 一元加法 (+) | 从右到左 | + … |
15 | 一元减法 (-) | 从右到左 | - … |
15 | 前置递增 | 从右到左 | ++ … |
15 | 前置递减 | 从右到左 | -- … |
15 | typeof | 从右到左 | typeof … |
15 | void | 从右到左 | void … |
15 | delete | 从右到左 | delete … |
15 | await | 从右到左 | await … |
14 | 幂 (**) | 从右到左 | … ** … |
13 | 乘法 (*) | 从左到右 | … * … |
13 | 除法 (/) | 从左到右 | … / … |
13 | 取余 (%) | 从左到右 | … % … |
12 | 加法 (+) | 从左到右 | … + … |
12 | 减法 (-) | 从左到右 | … - … |
11 | 按位左移 (<<) | 从左到右 | … << … |
11 | 按位右移 (>>) | 从左到右 | … >> … |
11 | 无符号右移 (>>>) | 从左到右 | … >>> … |
10 | 小于 (<) | 从左到右 | … < … |
10 | 小于等于 (<=) | 从左到右 | … <= … |
10 | 大于 (>) | 从左到右 | … > … |
10 | 大于等于 (>=) | 从左到右 | … >= … |
10 | in | 从左到右 | … in … |
10 | instanceof | 从左到右 | … instanceof … |
9 | 相等 (==) | 从左到右 | … == … |
9 | 不相等 (!=) | 从左到右 | … != … |
9 | 一致/严格相等 (===) | 从左到右 | … === … |
9 | 不一致/严格不相等 (!==) | 从左到右 | … !== … |
8 | 按位与 (&) | 从左到右 | … & … |
7 | 按位异或 (^) | 从左到右 | … ^ … |
6 | 按位或 (|) | 从左到右 | … | … |
5 | 逻辑与 (&&) | 从左到右 | … && … |
4 | 逻辑或 (||) | 从左到右 | … || … |
4 | 空值合并 (??) | 从左到右 | … ?? … |
3 | 条件(三元)运算符 | 从右到左 | … ? … : … |
2 | 赋值 | 从右到左 | … = … |
2 | 赋值 | 从右到左 | … += … |
2 | 赋值 | 从右到左 | … -= … |
2 | 赋值 | 从右到左 | … **= … |
2 | 赋值 | 从右到左 | … *= … |
2 | 赋值 | 从右到左 | … /= … |
2 | 赋值 | 从右到左 | … %= … |
2 | 赋值 | 从右到左 | … <<= … |
2 | 赋值 | 从右到左 | … >>= … |
2 | 赋值 | 从右到左 | … >>>= … |
2 | 赋值 | 从右到左 | … &= … |
2 | 赋值 | 从右到左 | … ^= … |
2 | 赋值 | 从右到左 | … |= … |
2 | 赋值 | 从右到左 | … &&= … |
2 | 赋值 | 从右到左 | … ||= … |
2 | 赋值 | 从右到左 | … ??= … |
1 | 逗号 / 序列 | 从左到右 | … , … |