• ベストアンサー

console.logでインクリメントのタイミング

下記で、hogeはなぜ2にならないのでしょうか? var hoge=1; console.log(hoge++); ・再度試せば2になるのですが、 var hoge=1; console.log(hoge++); console.log(hoge); ・引数指定しているのに、どうして一旦処理が終わった後に走るのか理解できません console.log(hoge++); ・色々試してみたのですが、どれも1です var hoge=1; console.log((hoge++)); var hoge=1; console.log((hoge)++); 後ろに++付けたときの挙動について教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.2

> 後ろに++付けたときの挙動について教えてください まさにあなたが経験したとおりの挙動をします。 インクリメント演算子はただ単に変数に 1 を足すだけではなく(なにしろ演算子ですから)何らかの値を返します。 後置で使用した場合はその返す値は 1 を足す前の変数の値になります。 内部的にはこんな感じでしょうか(ただし以下のコードは JavaScript の正しいコードではありませんし、関数内の引数に対する演算が呼び出し元に影響するという javaScript ではありえない動作をしていますが)。 ++ = function(i) {  var retval = i;  i = i + 1;  return retval; } 一方、以下のように前置で使用した場合は 1 を足した後の変数の値を返します。 var hoge=1; console.log(++hoge);

re97
質問者

お礼

回答ありがとうございました。 >ただ単に変数に 1 を足すだけではなく(なにしろ演算子ですから)何らかの値を返します ・説明分かりやすかったです ・参考になりましたー

その他の回答 (1)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 すごく簡単に言うと、console.logの実行後に加算されるからです。 http://f-site.org/articles/2002/01/26153948.html 参考にしてみてください。 console.log ( ++hoge ); にすれば、もちろん先に加算が実行されます。

re97
質問者

お礼

回答ありがとうございました。 ・リンク提示ありがとうございました ・参考になりましたー

関連するQ&A