我很难理解在
Javascript优先级的第14组中,Exponentiation和其他所有内容(乘法,除法等)的组合意味着什么.
三个问题:
>在一个组中组合从右到左和从左到右的关联性是什么意思?
>如何根据这些规则对表达式2 ** 3 * 4进行重新定义,仍然得到相同的答案? 4 * 2 ** 3作品……是什么意思?
>何时/如何不等于看似更简单的赋予取幂优先权的权宜之计?
解决方法
1)2 ** 3 ** 4,从右到左关联,是2 **(3 ** 4). 2/3/4,从左到右关联,是(2/3)/ 4.
2/3)我相信2 ** 3 * 4是(2 ** 3)* 4. 2 * 3 ** 4是2 *(3 ** 4)(由es6fiddle评估).
这不是从表中得出的;但取幂应优先于乘法.在一个优先级别中从左到右和从右到左混合是很奇怪的.事实上,就我在ES7 drafts中所看到的而言,它在语法上与*,/和%的处理方式完全不同,而是作为一元操作(!).
另请注意,除了Babel和Traceur之外,目前没有任何引擎支持**,所以此时它主要是学术性的. MDN是一个wiki,并且由Mozillian添加了取幂运算符;但是AFAIK,因为Mozilla目前不支持**,它实际上并没有记录Mozilla解释语言的方式.