私はこれをnode.jsで実行しています:
_> x = { 'foo' : 'bar' }
{ foo: 'bar' }
> console.log(x)
{ foo: 'bar' }
undefined
> console.log("hmm: " + x)
hmm: [object Object]
undefined
_
私が理解していないのは、console.log(x)
がオブジェクトを「きれいに印刷」するのに対し、文字列の連結が「ugい印刷」をする理由です。さらに重要なことは、_hmm: { foo: 'bar' }
_を印刷する最良の方法は何ですか?
+ x
は、オブジェクトx
を文字列に強制します。これは、単に[object Object]
:
プリティ印刷は非常に素晴らしく、おそらく非常に複雑な基礎コードであり、誰かがconsole
オブジェクトとlog
メソッドの一部として実装しました。
これを試して:
console.log("hmm: ", x);
'console.log'は、コピー(string | number | boolean)または参照(その他すべて)で渡されるパラメーターのリストを受け入れるオーバーロード関数です。
コピーによって渡される値の場合、値は文字列としてキャストすることにより出力されます。
参照渡しの値の場合、ブラウザが適切と判断した値はきれいに出力されます。
プラス記号演算子(+)がオーバーロードされています。演算子の両側が数値の場合、2つの演算子の合計が返されます。
演算子の片側が文字列の場合、両側が文字列としてキャストされ、これら2つの文字列の連結が返されます。
console.log("hmm: " + x);
書くことと同じです
console.log(String("hmm: ") + String(x));
プラス記号(+)をコンマ(、)と交換することにより、暗黙の文字列キャストを防止します
console.log("hmm: ", x);
「console.log」関数の詳細については、以下を参照してください。
https://developer.mozilla.org/en-US/docs/DOM/console.log
プラス記号演算子(+)の詳細については、以下を参照してください。
http://www.w3schools.com/js/js_operators.asp
使用する JSON.stringify
文字列を付加したオブジェクトを印刷する場合
console.log("Haa"+JSON.stringify(x))
複数のオプションがあります:
process.stdout.write('hmm: ')
console.dir(x)
別の...
var util = require('util')
process.stdout.write('hmm: ')
console.log(util.inspect(x, true, 10, true))
詳細については、 til.inspect docsを参照してください。
編集:申し訳ありませんが、Node.jsを読んだと思いました。これはNode.jsにのみ有効です。したがって、私はすべてのGoogle社員に任せます。
Edit2:私は夢中ではなく、ただ眠りが必要です。 Node.jsを作成しました。タグとして追加します。
console.log(JSON.stringify(yourObject));
を使用してオブジェクトを印刷できます。うまくいく!