Chromeのコンソールはconsole.log呼び出し時の値が出力されるわけではない
Chromeのjavascriptコンソールでデバッグしてたら、予想外の値が入っててちょっと混乱した。
例えば以下みたいなコード。
//Tesクラス生成 function Tes(){ this.a = 1; this.b = 2; }; var tes = new Tes(); //配列cに格納 var c = []; c[0] = tes; //cをログ出力 console.log(c); //あとで3を代入 tes.b = 3;
console.logの出力では、tes.b=2が入ってると思ったんだけど、実際見てみるとtes.b=3が入ってる。
このとき、コンソールをよく見ると、ログ出力の右側にものすごい小っちゃく「?」のアイコンが出てる。
「?」のアイコンをクリックしてみたら、以下の文章が出てきた。
「object state below is captured upon first expansion」
つまり・・・この出力で表示されてるのは、console.log呼び出し時の値ではなくて、あとでコンソールを閲覧した時の値が入ってるということ?
リアルタイムの代入値を知りたかったら、breakで処理止めて観測した方がよさそうですな。。