[解決済み] console.dirとconsole.logの違いは何ですか?
質問
Chromeでは
console
オブジェクトは、同じことを行うように見える2つのメソッドを定義しています。
console.log(...)
console.dir(...)
ネットのどこかで読んだのですが
dir
はログを記録する前にオブジェクトのコピーを取ります。
log
はコンソールに参照を渡すだけなので、ログに記録したオブジェクトを検査しようとしたときには、変更されている可能性があるということです。 しかし、いくつかの予備的なテストによると、違いはなく、どちらもログに記録されたときとは異なる状態のオブジェクトを表示する可能性があることに悩んでいるようです。
Chromeのコンソールで試してみてください( Ctrl + シフト + J )をご覧ください。
> o = { foo: 1 }
> console.log(o)
> o.foo = 2
ここで
[Object]
の下にある log ステートメントに注目してください。
foo
を使って実験を繰り返しても同じことが言えます。
dir
の代わりに
log
.
私の疑問は、この一見同じように見える2つの関数が、なぜ
console
?
解決方法は?
Firefoxでは、これらの関数は全く異なる動作をします。
log
をプリントアウトするだけです。
toString
の表現であるのに対し
dir
はナビゲート可能なツリーを出力する。
Chromeの場合。
log
はすでにツリーを出力しています --。
ほとんどの場合
. しかし、Chromeの
log
は、たとえプロパティを持つオブジェクトであっても、特定のクラスのオブジェクトを文字列化します。おそらく、違いの最も明確な例は、正規表現です。
> console.log(/foo/);
/foo/
> console.dir(/foo/);
* /foo/
global: false
ignoreCase: false
lastIndex: 0
...
また、配列でも明らかな違いが見られます(例.
console.dir([1,2,3])
である)。
log
は、通常のオブジェクトとは異なる方法で生成されます。
> console.log([1,2,3])
[1, 2, 3]
> console.dir([1,2,3])
* Array[3]
0: 1
1: 2
2: 3
length: 3
* __proto__: Array[0]
concat: function concat() { [native code] }
constructor: function Array() { [native code] }
entries: function entries() { [native code] }
...
DOMオブジェクトもまた、異なる挙動を示します。 別の回答で指摘されているように .
関連
-
[解決済み】JavaScriptのボタンonclickが機能しない
-
[解決済み】SyntaxError: ChromeのJavascriptコンソールでUnexpected Identifierが発生する。
-
[解決済み】event.stopPropagationとevent.preventDefaultの違いは何ですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] substrとsubstringの違いは何ですか?
-
[解決済み] nullはなぜオブジェクトなのか、nullとundefinedの違いは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Failed to load resource: net::ERR_FILE_NOT_FOUND loading json.js
-
[解決済み] 解決済み】clearInterval()が動作しない [重複] [重複]
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】React、Uncaught ReferenceError。ReactDOMは定義されていません
-
[解決済み】JavaScript ランタイムエラー:'$'が未定義です。
-
[解決済み】Uncaught SyntaxError: JSON の位置 0 に予期しないトークン u があります。
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み】 Uncaught Reference Error: stLight is not defined (in Chrome only)
-
[解決済み] Node.js の console.log() で '[Object]' ではなく、完全なオブジェクトを取得するにはどうすればよいですか?
-
[解決済み] Chromeのコンソールでフルオブジェクトを表示するには?