今回は興味深い UglifyJS をご紹介します。UglifyJS を使用する際の注意点は何ですか?実際の事例を見てみましょう。
圧縮コードを見ることが何もなかったわけではありませんが、今日自分のコードをデバッグしていて面白いことに気づきました。自分で書いたものなので、圧縮されていても整形後も読みやすいです。もちろん、最小値としての最初の基準は読みやすさではなく、単純さです。次に、コードを可能な限り短くし、可能な限り 1 行にまとめ、空白を最小限に抑えます。私たちがよく使うセミコロンがカンマに置き換えられ、短い文章が長くて一貫した文章になります。
元々は2番目の方法で書きましたが、uglifyはそれを1番目の方法に置き換えました(もちろん短いです)。実際、括弧と ! 記号の機能は、関数部分を宣言ではなく 式 に変換することです。このようにするとすぐに実行でき、同様に~ + もできます。
これは当然ですが、関数名、パラメータ名、変数名はすべて単一の文字に置き換えられます。 「_」の形式のコードでも
function foo (){} はモジュールの先頭に配置されます。もちろん、これは標準ですが、後でコードのマージを容易にするという別の機能もあることを後で知りました。 たとえば、次のように定義すると、
var self=this;function a(){} self.a=a;function b(){} self.b=b;return self;
は次のように置き換えられます:
function a(){}function b(){}var s={}return s.a={},s.b={},s
最後の s を見逃すことはできず、戻り値は最後の式の結果に基づいて返されることに注意してください。
function rt(n) { return n; } function xx() { return rt(1), rt(2); }
xx()を実行して2を取得します。rt(2)の後に値を返さない関数がある場合、xx()は未定義になります。
4.bool値の置換false-->!1 true-->!0
function load() { if (t) { x = false; log("error"); return; } console.log("22") }
if (t) return x =!1,void log("error")
function foo() { if (!x) { return; } console.log("doA"); console.log("doB"); }
function f() { x || console.log("doA"), console.log("doB"); }
(x&&y){ doa(); dob(); } doc(); --> x&&y&&(doa(),dob()),doc()
console.log("doA"); console.log("doB"); if (x>0) { console.log("true"); }
if (console.log("doA"), console.log("doB"), x > 0) console.log("true");
if (errMsg) { util.triggerCallback(fail, "模型验证错误"); throw Error(errMsg); }
if (a) throw x.triggerCallback(o, "模型验证错误"), Error(a)
var offset = 0; while (true) { if (offset >= bufferLength) { break; } }
for (var n = 0; ; ) { if (n >= K) break }
Web レコーディング機能を作成するために JS を proto Js に自動的に一致させる方法
以上が興味深いUglifyJSの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。