首页 新闻 会员 周边 捐助

js代码压缩后运行异常

0
[已解决问题] 解决于 2018-03-21 13:50
function InitAllParameter() {
    var _ProductControl = $('#sProduct');
    var _Level1Control = $('#sLevel1');
    var _Level2Control = $('#sLevel2');
    var _Level3Control = $('#sLevel3');

    $.ajax({
        type: "get",
        async: false,
        url: "/OA/Ashx/Search.ashx?type=InitAllParameter",
        contentType: "application/json; charset=utf-8",
        cache: false,
        error: errorFunction,
        success: function (data) {
            var json = eval(data); //数组
            var contentmsg = "<option value=''>Select</option>";
            _ProductControl.html(contentmsg);
            _Level1Control.html(contentmsg);
            _Level2Control.html(contentmsg);
            _Level3Control.html(contentmsg);
            $.each(json.LEProductDt, function (index, item) {
                  //....
            });

            var basicLength = json.LEBaiscLevelDt.length;
            $('#knowledge-basic').html('');
            var basicContent = "";
            var arrayObj = new Array();

            for (var j = 0; j < Math.ceil(basicLength / 4); j++) {
                for (var i = 0; i < 4; i++) {
                    //此处代码省略
                }
            }
        }
    });
};                

这段代码在压缩前可以正常运行,但是压缩后就出现异常。

查看压缩后的代码,发现

var _Level2Control = $('#sLevel2');

变成了

i=$("#sLevel2")

这个i变量会和success 方法里的i冲突,压缩后success里也会重新定义i

for (var i = 0; i < 4; i++) {
                    //此处代码省略
                }

如果把

var _ProductControl = $('#sProduct');
    var _Level1Control = $('#sLevel1');
    var _Level2Control = $('#sLevel2');
    var _Level3Control = $('#sLevel3');

定义移到success里定义就可以正常运行。

请问该如何避免这个问题?或者有其他更好的方式?

谢谢..

站在那看风景的主页 站在那看风景 | 菜鸟二级 | 园豆:371
提问于:2018-03-19 10:48
< >
分享
最佳答案
0

换压缩混淆器

奖励园豆:5
TCG2008 | 小虾三级 |园豆:1150 | 2018-03-19 22:02

我是用的VS的,在webconfig里直接 配置的...

站在那看风景 | 园豆:371 (菜鸟二级) | 2018-03-20 08:23
其他回答(1)
0

请使用 UglifyJs

by.Genesis | 园豆:2824 (老鸟四级) | 2018-03-20 10:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册