说明
每天10分钟,重构你的前端知识体系专栏笔记。
一、更新表达式 UpdateExpression
左值表达式搭配 ++ – 运算符,可以形成更新表达式。
二、一元运算表达式 UnaryExpression
更新表达式搭配一元运算符,可以形成一元运算表达式。
三、乘方表达式 ExponentiationExpression
乘方表达式也是由更新表达式构成的。它使用
**
号。
注意:**
运算是右结合的
四、乘法表达式 MultiplicativeExpression
乘方表达式可以构成乘法表达式,用乘号或者除号、取余符号连接就可以了。
乘法表达式有三种运算符:
五、加法表达式 AdditiveExpression
加法表达式是由乘法表达式用加号或者减号连接构成的。
加法表达式有两种运算符
六、移位表达式 ShiftExpression
移位表达式由加法表达式构成,移位是一种位运算,分成三种:
-
<<
向左移位 -
>>
向右移位 -
>>>
无符号向右移位
NOTE:移位运算把操作数看做二进制表示的整数,然后移动特定位数。所以左移 n 位相当于乘以 2 的 n 次方,右移 n 位相当于除以 2 取整 n 次。
七、关系表达式 RelationalExpression
移位表达式可以构成关系表达式(大于、小于、大于等于、小于等于等运算符号连接),统称为关系运算。
注意:<=
和 >=
完全是针对数字的,所以 <=
并不等价于 < 或 ==
。
八、相等表达式 EqualityExpression
在语法上,相等表达式是由关系表达式用相等比较运算符(如 ==)连接构成的。
1、运算符
- ==
- !=
- ===
- !==
其中 ==
是一个JavaScript中著名的设计失误。
类型不同的变量比较时 == 运算只有三条规则
-
undefined
与null
相等 - 字符串和
bool
都转为数字再比较 - 对象转换成
primitive
类型再比较
关于 primitive
可以看看ECMAScript 原始类型,以及这篇文章:JavaScript-变量-原始类型primitive type
九、位运算表达式
9.1、按位与表达式 BitwiseANDExpression
由按位与运算符(
&
)连接按位异或表达式构成,按位与表达式把操作数视为二进制整数,然后把两个操作数按位做与运算。
9.2、按位异或表达式 BitwiseANDExpression
由按位异或运算符(
^
)连接按位与表达式构成,按位异或表达式把操作数视为二进制整数,然后把两个操作数按位做异或运算。异或两位相同时得 0,两位不同时得 1。
9.3、按位或表达式 BitwiseORExpression
由按位或运算符(
|
)连接相等表达式构成,按位或表达式把操作数视为二进制整数,然后把两个操作数按位做或运算。
按位或运算常常被用在一种叫做 Bitmask
的技术上。有时间可以看看这篇:位掩码(BitMask)的介绍与使用
十、逻辑与表达式和逻辑或表达式
10.1、逻辑与表达式
由按位或表达式经过逻辑与运算符连接构成。
10.2、逻辑或表达式
由逻辑与表达式经逻辑或运算符连接构成。
十一、条件表达式 ConditionalExpression
由逻辑或表达式和条件运算符构成,条件运算符又称
三目运算符
,它有三个部分,由两个运算符?
和:
配合使用。