0

かなり長い間 JavaScript を使用していましたが、最近operator precedenceについて読み始めたばかりですが、答えが見つからないように見える壁に出くわしました。

次の例を検討してください。

x=1;      // x === 1
x++;      // x === 2

x=1;      // x === 1
y=x++;    // x === 2, y === 1

++よりも優先順位が高い場合、=どうして にyならないの2ですか?

今考えてみましょう:

x=1;      // x === 1
y=++x;    // x === 2, y === 2

++xx++が同一の結合性を持つ場合、この場合になるのy はどうしてですか?2

ここに付属の Fiddleがあります。

4

4 に答える 4

3

++演算子は、変数またはプロパティの参照の後に表示される場合、ポストインクリメント操作です。これは、++部分式の値がインクリメント前の値であることを意味します。

したがって、ここで機能するのは演算子の優先順位だけではありません。代わりに、それは演算子の基本的なセマンティクスです。

変数またはプロパティ参照の++に表示される場合、それはpre-incrementです。つまり、部分式の値は、変数またはプロパティの既にインクリメントされた値です。

プリインクリメントとポストインクリメントは、C プログラミング言語の一部であり、おそらく 1 つまたは複数の以前の言語でした。一部のコンピューター命令セットには、プリインクリメントとポストインクリメントの効果を連想させる動作を備えたアドレッシング モードがあります。

于 2013-05-23T21:12:16.067 に答える
2

x++ポストインクリメントです。の現在の値を返し、xそれ1 増やします。++x一方、 はプレインクリメントです。xの値を1インクリメントしてから、 の現在の値返しますx

于 2013-05-23T21:12:32.523 に答える
1

++ 変数の後に置くと、後置インクリメントが実行されます。変数はインクリメントされますが、古い値が式で返されます。

変数の++ に置くことは、接頭辞の増分です。インクリメントされた値が返されます。これは、演算子の優先順位とは関係ありません。

参考文献

于 2013-05-23T21:12:17.237 に答える
0

これは、++xとが同じでx++ないためです。

  • ++xインクリメントして新しい値xを返します
  • x++インクリメントして元の値xを返します
于 2013-05-23T21:12:52.193 に答える