我很难理解在Javascript优先级第14组中幂运算和其他运算(如乘法、除法等)的结合意味着什么。
有三个问题:
- 将从右到左和从左到右的结合性结合在一组中的含义是什么?
- 如何根据这些规则重新表达表达式2 ** 3 *4,并且仍然得到相同的答案?4 * 2 ** 3可以吗?
- 何时/如何不等同于给予幂运算更高的优先级似乎更简单?
我很难理解在Javascript优先级第14组中幂运算和其他运算(如乘法、除法等)的结合意味着什么。
有三个问题:
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草案中,指数运算符与*
、/
和%
完全不同的语法处理方式,而是一元操作符!
还要注意,除Babel和Traceur之外,目前没有其他引擎支持**
,因此它在这一点上大多是学术性的。 MDN是一个维基百科,指数运算符是由Mozillian添加的;但是据我所知,由于Mozilla目前不支持 **
,因此它实际上并没有记录Mozilla解释语言的方式。
Math.pow
函数。**
只是一种语法糖。 - Amadan