2015-10-07 79 views
7

我很難理解Javascript優先級組14中指數運算和其他所有操作(乘法,除法等)的組合是什麼意思。Javascript運算符優先級技術性

Source - MDN

三個問題:

  1. 什麼是相結合的意義從右到左,左到右聯在一組?
  2. 如何將表達式2 ** 3 * 4按照這些規則改寫,並且仍然得到相同的答案? 4 * 2 ** 3作品...是什麼意思?
  3. 何時/如何不等於給予指數更高優先級的表面上更簡單的權宜之計?
+0

從右到左意味着2 ** 3 ** 4 = Math.pow(2,Math.pow(3,4)); –

回答

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解釋語言的方式。

+0

謝謝!我以某種方式未能證明冪指數是實驗性的......我想我把它內化爲在過去不好的時代的一個必要背景 - 我認爲它是在FORTRAN中:) – NessBird

+0

指數是必要的;但你有'Math.pow'。 '**'只是句法糖。 – Amadan