Javascript运算符优先级技术性

时间:2015-10-07 04:07:50

标签: javascript

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

Source - MDN

三个问题:

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

1 个答案:

答案 0 :(得分:2)

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 drafts中所看到的而言,它在语法上与*/%的处理方式完全不同,而是作为一元操作(!)。

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