0

私はBundleTransformer.Yui.Minifiers.YuiJsMinifierをasp.net MVC 4プロジェクトで使用していますが、YUIコンプレッサーのバグだと思います...

...
var varName='...';
alert(varName); //alert('...')
            $.ajax({
                url: url,
                success: function (t, s) {
alert(varName); //alert(t);
}

BundleTrasformer が YUI コンプレッサー変数 varName を使用してこのコードを縮小および難読化すると、変数 varName が t になり、関数パラメーター t が t のままになるため、varName get は t で上書きされます... チェックアウト コメント付きアラート... 私の質問は、コンプレッサーを変更するか、すべての名前を変更するかです、および2文字の変数をより長い変数に変換しますか? 私は何か間違ったことをしていますか?コードを 1 行変更するだけで問題ないので、YUI コンプレッサーのバグであると確信しています。

...
var varName='...';
alert(varName); 
            $.ajax({
                url: url,
                success: function (data, s) {
alert(varName); 
}

PS 1 文字の変数名を使用するのは良い習慣ではないことはわかっていますが、それでも YUI コンプレッサーのバグです... PPS: 私は成功関数内で eval を使用しています。(これも良い習慣ではありませんが、それでも、YUI コンプレッサーはコードを分割すべきではありません :/)

4

1 に答える 1

0

変数はグローバルであるため、そのvarName名前は処理されません。

ローカルにする必要があります。これを行うには、IIFE (Immediately Invoked Function Expression) でコードをラップします。

(function(){
    ...
    var varName='...';
    alert(varName); 
                $.ajax({
                    url: url,
                    success: function (data, s) {
    alert(varName); 
    }
})();
于 2014-09-26T09:02:18.503 に答える