1、运算符优先级,从 低到高
- 逗号 运算符
- 扩展 运算符
- yield关键字 运算符(yield,yield*)
- 赋值 运算符
- 三元 运算符
- 其它二元 运算符(二元关键字运算符在末位)
- 其它一元 运算符(一元关键字运算符在末位)
- 函数相关 运算类型
new(无参数列表): new ...() 。
函数调用: ...(...) 。可选链 运算符: ?. ,这个无关函数运算类型,因为优先级, 故插入在此 。
new(有参数列表): new ...(...) 。 - 需计算的成员访问 运算符
…[…]
- 不需计算的成员访问 运算符
… . …
- 圆括号 运算符
(…)
常用运算符优先级,从 低到高 :
- 赋值 运算符
- 三元 运算符
- 非一元逻辑 运算符
- 等号比较 ...
- 大小比较 ... 和 从属关系 ...(运算符非符号)
- 加减 ...
- 乘除 ...
- 一元 ...
- 前置一元 ...(部分运算符非符号)
- 后置一元 ...
- 成员访问 ...
- 圆括号 ...
( 上面1-7 都不是一元运算符。从属关系运算符类别,包括 in 和 instanceof两个运算符。)
2、相同优先级运算符的
执行顺序取决于关联性,关联性分三种情况:
- 右关联的(从右往左执行)(右结合)
主要的是:= 和 ?:
w = x = y = z;
q = a ? b : c ? d : e ? f : g;
等价于
w = (x = (y = z));
q = a ? b : (c ? d : (e ? f : g));
- 左关联的
- 无关联的
3、运算符优先级的两端
逗号运算符(最低) <--->
圆括号运算符(最高)
(备注:文中 "..." 代指运算符。)
如果需要了解具体每一个JS运算符的优先级,可以参看 https://developer.mozilla.org...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。