Javascript操作符优先级技术问题

Javascript operator precedence technicality

本文关键字:问题 技术 优先级 操作符 Javascript      更新时间:2023-09-26

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

Source - MDN

三个问题:

  1. 将从右到左和从左到右结合在一个基团中是什么意思?
  2. 表达式2 ** 3 * 4如何根据这些规则改写,并且仍然得到相同的答案?4 * 2 ** 3可以…是这个意思吗?
  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草案中,它在语法上与*, /%完全不同,而是作为一元操作(!)。

还需要注意的是,目前除了Babel和Traceur之外,没有其他引擎支持**,所以它在这一点上主要是学术性的。MDN是一个wiki,取幂运算符是由一个莫桑比克人添加的;但是由于Mozilla目前不支持**,它实际上并没有记录Mozilla解释该语言的方式。