1

以下のコードを適用する 2 つのフィドルがあります。唯一の違いは、1 つは console.log を使用し、もう 1 つはアラートを使用して変数 myString の値を表示することです。1 つのフィドルは文字列 'foo' を警告し、もう 1 つのフィドルは foo を次のようにログに記録し foo {0="f", 1="o", 2="o"} ます。この違いの原因は何ですか?

    var myString = new String('foo'); // produces a String() object

   alert(myString);​

http://jsfiddle.net/mjmitche/UdYXZ/

http://jsfiddle.net/javascriptenlightenment/XcfC5/

4

3 に答える 3

4

console.log変数の実際の内容を出力します。この場合、これはプロパティを持つオブジェクトです。

alert一方、最初にすべてをプリミティブ文字列にキャストします。

于 2012-10-12T20:46:59.140 に答える
0

console オブジェクトのfirebug ドキュメントから:

オブジェクトがログに記録される場合、それらは静的テキストとしてではなく、Firebug の HTML、CSS、スクリプト、または DOM タブでオブジェクトを検査するためにクリックできるインタラクティブなハイパーリンクとして書き込まれます。%o パターンを使用して、文字列内のハイパーリンクを置き換えることもできます。

于 2012-10-12T20:43:54.717 に答える
0

alert() は、オブジェクトの toString() メソッドを使用して、渡されたオブジェクトを文字列に変換します。alert() とは異なり、console.log() は単純な文字列の表示に限定されず、渡されたオブジェクトと対話することができます。たとえば、そのプロパティを調べることができます。

于 2012-10-12T20:45:38.133 に答える