Nightly で Function.toString() の挙動が変わった

いつから変わっていたか、分からないけど...。

function sum(){
  // 引数を全部足すよ
  return Array.reduce(arguments, function (result, current) {
    return result + current;
  });
}
sum(1,2,3,4,5);
sum.toString();

下記画像は上記コードを書いた結果である。

Firefox 10 ESR の実行結果キャプチャ

Firefox 17.0a1 の実行結果キャプチャ

旧来(Firefox 10 ESR)では、整形された結果を返してくれていた。
ところが、Nightly では、入力コードそのままを出力しているように見える。コメントや改行位置、インデントまで反映された結果となっている。

別に、どちらが良いというわけではないが、アドオンなどで、Firefox内部の関数を上書きするために、

eval('obj.to.func = ' + obj.to.func.toString().replace(....., "..."));

みたいなことをしている人には注意が必要かも。

個人的には、インデントはともかく、改行位置が反映されているのは歓迎している。デバッグ出力した時、無駄に長く一行に整形されて返ってくることがなくなったから。