Javascript运算符优先级技术性

Nes*_*ird 7 javascript

我很难理解在Javascript优先级的第14组中,Exponentiation和其他所有内容(乘法,除法等)的组合意味着什么.

来源 - MDN

三个问题:

  1. 在一个组中组合从右到左和从左到右的关联性是什么意思?
  2. 如何根据这些规则对表达式2**3*4进行改写,仍然得到相同的答案?4*2**3作品......是什么意思?
  3. 何时/如何不等于看似更简单的赋予取幂优先权的权宜之计?

Ama*_*dan 3

1) 2 ** 3 ** 4,从右到左结合,是2 ** (3 ** 4)2 / 3 / 4,从左到右结合,是(2 / 3) / 4

2/3) 我相信2 ** 3 * 4(2 ** 3) * 42 * 3 ** 42 * (3 ** 4)(由es6fiddle评估)。

这并不是从表中得出的;但求幂应该优先于乘法。在一个优先级中混合从左到右和从右到左是很奇怪的。事实上,据我在ES7 草案*中看到的,它在语法上的处理方式与, /and完全不同%,而是作为一元运算(!)。

另请注意,目前除了 Babel 和 Traceur 之外没有其他引擎支持**,因此目前主要是学术性的。MDN 是一个 wiki,幂运算符是由 Mozillian 添加的;但据我所知,由于 Mozilla 目前不支持**,因此它实际上并没有记录 Mozilla 解释该语言的方式。