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里定义就可以正常运行。
请问该如何避免这个问题?或者有其他更好的方式?
谢谢..
换压缩混淆器
我是用的VS的,在webconfig里直接 配置的...
请使用 UglifyJs