- ベストアンサー
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)++); 後ろに++付けたときの挙動について教えてください
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 後ろに++付けたときの挙動について教えてください まさにあなたが経験したとおりの挙動をします。 インクリメント演算子はただ単に変数に 1 を足すだけではなく(なにしろ演算子ですから)何らかの値を返します。 後置で使用した場合はその返す値は 1 を足す前の変数の値になります。 内部的にはこんな感じでしょうか(ただし以下のコードは JavaScript の正しいコードではありませんし、関数内の引数に対する演算が呼び出し元に影響するという javaScript ではありえない動作をしていますが)。 ++ = function(i) { var retval = i; i = i + 1; return retval; } 一方、以下のように前置で使用した場合は 1 を足した後の変数の値を返します。 var hoge=1; console.log(++hoge);
その他の回答 (1)
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 すごく簡単に言うと、console.logの実行後に加算されるからです。 http://f-site.org/articles/2002/01/26153948.html 参考にしてみてください。 console.log ( ++hoge ); にすれば、もちろん先に加算が実行されます。
お礼
回答ありがとうございました。 ・リンク提示ありがとうございました ・参考になりましたー
お礼
回答ありがとうございました。 >ただ単に変数に 1 を足すだけではなく(なにしろ演算子ですから)何らかの値を返します ・説明分かりやすかったです ・参考になりましたー