(これはちょっとした XY 問題ですが、現時点で厳密に必要な質問ではなく、興味のある質問をすることにしました。) さまざまな最新の JavaScript エンジンには、デッド コード エリミネーターやその他の削除手段があることを知っています。効果も副作用もないコードですが、そのようなコードをどのように識別および/または構成しますか?
デッド コードの削除に関するウィキペディアの記事では、到達不能コード、つまりreturn
、関数内の無条件ステートメントの後に発生するコードの単純な例を示しています。しかし、そのようなコードを排除するために、最新の主要な JavaScript エンジンを当てにできるでしょうか? たとえば、Rhino または V8 はこのコードを排除しますか?
function (foo) {
return;
return foo;
}
function (foo) {
foo = foo;
}
op関数がない場合はどうなりますか?
(function () {}(foo));
jQuery.noop(foo);
これらの例はすべて JSHint をだますものであり、JSLint は奇妙な割り当て foo = foo
をキャッチしますが、noops または変数のペアを使用して非常に簡単にだますことができます。
function (foo) {
var bar = foo;
}
静的コード アナライザーをだますことができれば、エンジン自体をだますでしょうか?
すべての異なる JavaScript エンジンのソースを綿密に調べる以外に、プログラムが実行される前に確実に削除される種類のコードを特定および/または構築する方法はありますか?省略されていませんか、それとも単なる設計上の選択ですか?