【JavaScript】eval難読化で、動作しない場合に見直す点

  • 投稿 : 2016-12-28
var httpObj = new XMLHttpRequest();
httpObj.open("GET", "http://example.com", true);
httpObj.onreadystatechange = function() {
    if (httpObj.readyState == 4) {
        data_string = httpObj.responseText;
    }
}; //<-ここ
httpObj.send(null);

1.各行の最後に「;」セミコロンをつける。
2.prototype定義の最後にも「;」を
命令の行末に「;」は基本的なものですが、たとえば、以下のようなprototype定義にも「;」が必要になる場合があります。
JavaScriptを圧縮・難読化する時の注意点 : アシアルブログ

eval難読化(圧縮)すると動作しないものがあっておかしいなと思ったら「;」が抜けてました。
「;」が抜けてても、通常では動作するし、文法的にも間違いではないんですけどね。

セミコロンをつけない派、つける派

JavaScriptの行末セミコロンは省略すべきか
JavaScriptのセミコロンを省くと起こること - Qiita

ところが、 Bootstrap に含まれるJavaScriptコードを見てみると、基本的にセミコロンが使用されていません。 調べてみると、どうも世の中にはJavaScriptのステートメント末尾にセミコロンをつけない派というのが存在するらしいことがわかってきました。
JavaScriptの行末セミコロンは省略すべきか

Javascriptのセミコロンについて調べたら上記のような話がヒットしました。Bootstrapのソースをみたら、確かについてない。

JavaScript の ; を省略する派
むかし同じチームだったひとに、JavaScript のセミコロンを省略する派のひとがいて、他の人と「もう日本語かくとき句読点も省略すればいいじゃないの」とか、散々いっていた。でも実は GitHub も省略派らしい。
JavaScript の ; を省略する派 - Kato Kazuyoshi

私は、つける派なのでつけますけどね。
プロの人はコーディング規約とかに従うしかないとは思いますが、そうでない人は、個人的にはつけたほうがハマりにくい気がします。
スポンサーリンク