目次
この記事は2分ほどで読めます。
1. 問題
2. 解説
3. 結局どちらを使えば良いか
1. 問題
// JavaScriptの場合
let hoge = 10;
console.log(++hoge);
console.log(hoge++);
// Javaの場合
int hoge = 10;
System.out.println(++hoge);
System.out.println(hoge++);
Q: 上記コードを実行したときにどのように表示されるでしょうか?(補足:JavaScriptとJavaの実行結果は同じになります)
考え中・・・
A: 正解は以下のとおりとなります
11
11
2. 解説
- hoge++と++hogeの挙動の違いを一言で表すと「変動
前
の変数を返すか変動後
の違いを表すか」です。 - ++hogeのように++を変数前につけた場合は「変動
後
の変数の中身」を返します - 今回の場合「hoge = 10」に1を足した11が返ってくるようになります。
- hoge++のように++を後ろにつけた場合は「変動
前
の変数の中身」を返します。 - 今回の場合すでに++hogeで「hoge = 11」になっている中身に対して、さらにhoge++で1を足して12にしようとしています。
が、「console.log(hoge++)」つまり「console.log(変動前
のhogeの中身)」を返すので11が表示される、という挙動になります。(System.out.println()の場合も同様) - これはデクリメント(hoge--,--hoge)の場合も同じ挙動となります。ぜひ試してください。
3. 結局どちらを使えば良いか
- 結論から言うと「どちらを使うかよりも、ほかの演算子と一緒に使わないようにすること」が大切です。
- 要は混ぜるな危険ということです。
- console.log()やSystem.out.println()のような演算子に入れて使うのではなく、
hoge++;
のように単独で使うようにしましょう。 - これによって、ほかのエンジニアが見てもパッと理解ができるコーデになるでしょう。
- (個人的にはhoge++と++hogeに関してはhoge++の方を利用しています。どちらを利用するにしても、特別な理由がない限り統一しましょう。)
いかがでしたでしょうか。 ご好評であれば、他にも詰まりそうな点も記事にしていこうと思います。 「いいね / フォロー」いただけますと大変励みになります!