vari=0vara=i++console.log(a,i)// => a=0;i=1;a=++iconsole.log(a,i)// => a=2;i=2;关联性决定了拥有相同优先级的运算符的执行顺序 左关联(左到右)相当于把左边的子表达式加上小括号(a OP b) OP c 右关联(右到左)相当于a OP (b OP c),赋值运算符是典型右关联的
- 21 圆括号
- 20 面向对象与函数相关
- 19 无参数new (new F)
- 18 后置加减
- 17 前置加减 & 逻辑非(!n) & tvda
- 16 幂
- 15 乘除摸
- 14 加减法
- 12 大小判断 & instanceof
- 11 相等判断
- 7 &&
- 6 ||
- 4 ? :
- 3 赋值
- 1 展开运算符
- 0 逗号
- 同级运算按从左到右运算
- *常用
| 优先级 | 运算类型 | 运算符 |
|---|---|---|
| 21 | *圆括号 | (…) |
| 20 | *成员访问 | … . … |
| 20 | *需计算的成员访问(中括号) | …[…] |
| 20 | *new (带参数列表) | new…(…) |
| 20 | *函数调用 | …(…) |
| 20 | *可选链(Optional chaining) | ?. |
| 19 | *new (无参数列表) | new … |
| 18 | *后置递增(运算符在后) | …++ |
| 18 | *后置递减(运算符在后) | …-- |
| 17 | *逻辑非 | ! … |
| 17 | *按位非 | ~ … |
| 17 | *一元加法 | + … |
| 17 | *一元减法 | - … |
| 17 | *前置递增 | ++ … |
| 17 | *前置递减 | -- … |
| 17 | *typeof | typeof … |
| 17 | *void | void … |
| 17 | *delete | delete … |
| 17 | *await | await … |
| 16 | *幂 | … ** … |
| 15 | *乘法 | … * … |
| 15 | *除法 | … / … |
| 15 | *取模 | … % … |
| 14 | *加法 | … + … |
| 14 | *减法 | … - … |
| 13 | 按位左移 | … << … |
| 13 | 按位右移 | … >> … |
| 13 | 无符号右移 | … >>> … |
| 12 | *小于 | … < … |
| 12 | *小于等于 | … <= … |
| 12 | *大于 | … > … |
| 12 | *大于等于 | … >= … |
| 12 | *in | … in … |
| 12 | *instanceof | … instanceof … |
| 11 | *等号 | … == … |
| 11 | *非等号 | … != … |
| 11 | *全等号 | … === … |
| 11 | *非全等号 | … !== … |
| 10 | *按位与 | … & … |
| 9 | *按位异或 | … ^ … |
| 8 | *按位或 | … | … |
| 7 | *逻辑与 | … && … |
| 6 | *逻辑或 | … || … |
| 5 | 空值合并 | … ?? … |
| 4 | *条件运算 | … ? … : … |
| 3 | *赋值 | …=…, …+=…, …-=…, …*=… , …\=… |
| 2 | yield | yield… |
| 2 | yield* | yield*… |
| 1 | *展开运算符 | ... … |
| 0 | *逗号 | …,… |
引用类型间的相等判断(无论是==还是===)是比较引用地址
vara=[1,2]varb=aa===b// truea==b// truevarc=[1,2]vard=[1,2]c===d// falsec==d// false引用类型间比较大小是按照字典序比较,就是先比第一项谁大,相同再去比第二项
vara=[1,2,3],b=[1,2,4]a>b//falsea<b//true