0

我在 asp.net MVC 4 项目中使用 BundleTransformer.Yui.Minifiers.YuiJsMinifier,但我认为这是 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 被 t 覆盖...结帐注释警报...我的问题是我应该更改压缩器,还是重命名所有一个, 和两个字母变量变成更长的?难道我做错了什么?如果我只更改一行代码,一切正常,所以我很确定这是 YUI 压缩器错误

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

PS 我知道使用一个字母的变量名不是一个好习惯,但它仍然是 YUI 压缩器错误... PPS:我在 succes 函数中使用 eval。(知道这也不是好习惯,但 YUI 压缩器不应该分解代码:/)

4

1 回答 1

0

varName变量是全局变量,因此不处理其名称。

你需要把它本地化。为此,请将代码包装在 IIFE(立即调用函数表达式)中:

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