Webkitのconsole.logで配列を評価すると値が異なる

以前から知られていた不具合。出力直前でalertさせる以外の解決方法があったので記載しておく。

■再現コード

var ary = ["hoge"];
console.log(ary);
ary[0] = "fuga";
console.log(ary);

Firefox3.6

Firefox3.6のfirebugの場合は以下のように表示される。

["hoge"]
["fuga"]

Chrome8

Chrome8の場合は以下のように表示される。

["fuga"]
["fuga"]

■修正

以下のように文字列として表示するとChrome8でもFirefoxのように表示される。

var ary = ["hoge"];
console.log(ary.toString());
ary[0] = "fuga";
console.log(ary.toString());

もしくは以下のようにJSON.stringifyを使用し、JSON文字列とする。

var ary = ["hoge"];
console.log(JSON.stringify(ary));
ary[0] = "fuga";
console.log(JSON.stringify(ary));

■詳細

console.log object maps are read when you open the treeview on the console, not when they’re output in the console

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です