gpt4 book ai didi

javascript - 打包 JavaScript 库后对象消失

转载 作者:行者123 更新时间:2023-12-03 08:48:47 27 4
gpt4 key购买 nike

我创建了一个 JavaScript 库,并将其打包为以下选定的选项:Shrink VariablesBase62 Encoded在这个网址:http://dean.edwards.name/packer/ 。在这个库中我声明了一个对象 ax ,但是当我在网页中使用打包版本时,我收到一条错误消息 Uncaught ReferenceError: ax is not defined .

该库的原始代码如下所示。

var ax = {
scaleUp:function(win) {
//code omitted
},
downGrade:function(win) {
//code omitted
}
}

在我使用这个库的网页中,我有如下代码。如果我不打包,而是使用 Microsoft 的 Minifier 缩小它,或者仅使用原始 JavaScript 库而不缩小或打包,则此代码可以工作。

var result = ax.downGrade(w);

问题:为什么变量是 ax打包版本无法访问?使用打包版本时需要添加其他内容吗?

更新 1:

我无法使打包文件正常工作,但通过另一个压缩实用程序在以下网址打包我的代码在我的情况下有效:http://jsutility.pjoneil.net/ 。它提供了同样好的压缩效果。

我仍然不确定为什么原始 url 上的实用程序无法生成我的库的工作版本,即使我的原始代码在任何网页上都没有任何错误。

最佳答案

在尝试调用 ax.之前请检查控制台是否有错误。将分号显式地放置在它们所属的位置。例如,在 ax 定义的末尾,您应该放置一个分号,即使在标准代码中它本身就很好。删除显式的 var 声明。当我做这些事情时:

ax = {
scaleUp:function(win) {
alert("up");
},
downGrade:function(win) {
alert("down");
}
};
result = ax.downGrade();

在 jsFiddle 和控制台中运行没有问题:http://jsfiddle.net/7kdnw65n/ 。我怀疑这与算法如何“缩小”变量有关。最终的包是:

eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0={5:1(2){3("6")},4:1(2){3("7")}};8=0.4();',9,9,'ax|function|a|alert|downGrade|scaleUp|up|down|result'.split('|'),0,{}))

关于javascript - 打包 JavaScript 库后对象消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32768129/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com