[解決済み] オブジェクトとconsole.logの奇妙な動作 [重複]。
2022-10-04 10:35:52
質問
このコード
foo = [{id: 1},{id: 2},{id: 3},{id: 4}, {id: 5}, ];
console.log('foo1', foo, foo.length);
foo.splice(2, 1);
console.log('foo2', foo, foo.length);
Chromeでは以下のように出力されます。
foo1
[Object, Object, Object, Object, Object] 5
0: Object
1: Object
2: Object
3: Object
length: 4
__proto__: Array[0]
5 (index):23
foo2
[Object, Object, Object, Object] 4
0: Object
1: Object
2: Object
3: Object
length: 4
__proto__: Array[0]
フィドル http://jsfiddle.net/2kpnV/
なぜでしょう?
どのように解決するのですか?
オブジェクトを調べるには
console.log
を介したオブジェクトの検査は非同期的に行われます。コンソールはオブジェクトへの参照を同期的に受け取りますが、展開されるまでオブジェクトのプロパティは表示されません (場合によっては、ブラウザやログが発生したときに開発ツールを開いているかどうかによって異なります)。コンソールで調べる前にオブジェクトが変更されていた場合、表示されるデータには更新された値が含まれます。
例えば、Chrome では、少し
i
を表示し、カーソルを当てるとこう表示します。
左のオブジェクトの値は、ログに記録されたときにスナップショットされたもので、下の値はたった今評価されたものです。
を使えば、何を見ているのかが分かります。
このような場合のログのコツは、個々の値をログに残すことです。
console.log(obj.foo, obj.bar, obj.baz);
または、オブジェクトの参照をJSONエンコードする。
console.log(JSON.stringify(obj));
関連
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] .prop() vs .attr()
-
[解決済み] オブジェクトの配列から、プロパティの値を配列として取り出す。
-
[解決済み] Javascript / Chrome - webkitインスペクタからオブジェクトをコードとしてコピーする方法
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ChromeのJavaScriptコンソールは、オブジェクトの評価を怠るのか?
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?