可能性の重複:
Is Chrome's JavaScript console lazy about evaluating arrays?Chrome、Firefox、Safariのjavascriptオブジェクトのコンソールに表示される値が異なるのはなぜですか?
このJavaScriptを考えてみましょう:FirefoxのFirebugので
var foo = {bar : 1111};
console.log(foo);
console.log(foo.bar);
foo.bar = 2222;
console.log(foo);
console.log(foo.bar);
を、これは私が期待しているだろうかを示しています。
Object { bar=1111}
1111
Object { bar=2222}
2222
しかし、SafariやChromeのコンソールで、それは示しています。印刷ダンプが、正しい値が特定の属性が印刷されている場合ときつまり
Object { bar=2222}
1111
Object { bar=2222}
2222
を、オブジェクトはコンソールで間違った属性を示しています。
これはブラウザのクールな機能ですか?またはオブジェクト指向のJavaScriptの基本的な側面私は行方不明ですか?
私は推測していた場合、私は、デバッガが最初のもののためにメモリ内のオブジェクトへの参照を格納し、2つ目の値そのものだと思います。コードが参照を更新するので、監視されているデバッガの値も更新されます。全体的な野生の推測。 –
SafariとChromeがJavaScriptを最適化し、foo.barへの割り当てを元のオブジェクト定義と組み合わせてから、2つのconsole.logステートメントのfoo.barの期待値をインライン展開することを推測してください。 –
ありがとうマイクとジョン。これはそうではないと思われます。 私の目では、これはSafariとChromeがデバッグしようとしている間私のコードについて私に嘘を言っているということです!実行中にコードの2つのポイントにオブジェクトに含まれるものがすばやく表示されるようにするには、SafariとChromeで実際の表現ができません。 おそらく、私のデバッグルーチンは洗練されていないかもしれませんし、コードの中の手動console.log行に頼ってはいけませんか? –