Open1

JavaScriptのconsole.logの動作が気になる

kajirikajirikajirikajiri

console.logによるobjectの調査は非同期的に行われる。
コンソールは同期的にobjectへの参照を受け取るが、objectが展開されるまではobjectのプロパティは表示されない。(場合によって異なる)
コンソールで調査する前にobjectが更新されていた場合、表示されるデータには更新された値が表示される。

chromeでは i のようなマークが表示され、注釈として「左のオブジェクトの値はログに記録されたときにスナップショットされたもので、下の値はたった今評価されたものです。」と表示される。

つまりchromeではコンソールでobjectを展開した瞬間に評価する。

後から更新されなければいいので、logに表示するたびにdeepcopyすればよい。

https://stackoverflow.com/questions/23429203/weird-behavior-with-objects-console-log
https://www.npmjs.com/package/rfdc