2015-10-07 13 views
7

Javascript優先順位のグループ14の累乗と他のすべて(掛け算、除算など)の組み合わせが何を意味するのかを理解するのは難しいです。JavaScriptの演算子の優先順位の技術

Source - MDN

3つの質問:

  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) * 4と考えています。 2 * 3 ** 4は、es6fiddleによって評価されるように、2 * (3 ** 4)である。

これは表のとおりではありません。累乗は乗算よりも優先されるべきです。 1つの優先順位で左から右と右から左を混ぜるのは変です。実際、ES7 draftsに見る限り、文法的には*,/および%と同じように扱われますが、単項演算(!)はありません。

BabelとTraceur以外のエンジンは現時点では**をサポートしていないため、ほとんどの時点で学問的です。 MDNはwikiであり、累乗演算子はMozillaによって追加されました。しかしAFAIKはMozillaが現在**をサポートしていないので、Mozillaが言語を解釈する方法を実際には文書化していません。

+0

ありがとう!私はどうにかして累乗が実験的であったことを忘れてしまった...私はそれを悪い昔の本質的なバックとして内在化したと思う - それはFORTRANにあると思う: – NessBird

+0

累乗は必須である。あなたは 'Math.pow'を持っています。 '**'は文法的な砂糖です。 – Amadan

関連する問題