読者です 読者をやめる 読者になる 読者になる

素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

コードの整形

javascript

追記:Twitter / 10th543: あ・・・ボタンが��で指摘されたのでmetaタグを追加した。どちらにしろ、script要素のdefer属性を使っているので、Firefox3.1以降じゃないと動かないと思う。
FIrefoxだと、Function#toSourceに数値を渡せばきれいにインデントしてくれる。
それを使ってコードを整形する物をinstant JavaScript code formatterに書いた。
例えば、

var t = (new Date).getTime();var i;for(i=0;i<10000;++i){(function () {return 3;}())};;;
(window.console && console||alert)(new Date().getTime() - t);
               alert("ok!");
alert(t += 2);                switch (1) {case 1:break;}
                   if ("i" in {i: 0}) {          }
    with ({o:2,alert:
      window.console?console.log:
    alert})           alert(o);
                     +t+++ ++t+t+++ ++t;      1 * *;
    0/0/0/0/0/0/(0)(1),4,2;  const DEBUG=false;if(DEBUG)alert(1);

を、

var t = (new Date).getTime();
var i;
for (i = 0; i < 10000; ++i) {
    (function () {return 3;}());
}
(window.console && console || alert)((new Date).getTime() - t);
alert("ok!");
alert(t += 2);
switch (1) {
  case 1:
    break;
  default:;
}
if ("i" in {i: 0}) {
}
with ({o: 2, alert: window.console ? console.log : alert}) {
    alert(o);
}
+ t++ + ++t + t++ + ++t;
1 * *;
0 / 0 / 0 / 0 / 0 / 0 / (0)(1), 4, 2;
const DEBUG = false;
if (DEBUG) {
    alert(1);
}

のようにしてくれる。
明らかに実行されることのないコードは、FirefoxJavaScriptを解釈する際に削除しているのが分かる。ただ、定数を使ったりswitchを使ったりすると除去されなかったりするので、そこまで手の込んだことはしていないようだ。