首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串字面量的JavaScript缩小?

字符串字面量的JavaScript缩小?
EN

Stack Overflow用户
提问于 2010-07-21 11:19:37
回答 3查看 4.2K关注 0票数 5

我查看了一些JavaScript压缩,注意到不是对象属性名的字符串都不会缩小到变量中。

例如,假设我的脚本中有这两段代码:

代码语言:javascript
复制
alert("Wrong answer");
alert("Wrong answer buddy");

如果我没记错的话,我们从YUI和闭包中得到的缩减是:

alert("Wrong answer");alert("Wrong answer buddy")

我认为由此产生的缩减如下所示:

代码语言:javascript
复制
var a="Wrong answer";alert(a);alert(a+" buddy");

有什么缩小工具可以做到这一点吗?是什么阻止了我们的工具做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-21 11:44:59

gzip压缩会将相同的字符串压缩为一个或两个字节。使用它,它就不是问题了。:)

票数 8
EN

Stack Overflow用户

发布于 2010-07-21 11:36:24

如果我要大胆猜测,我会说这是因为编译器无法判断何时将字符串拆分成变量并将它们连接在一起会更好。(而且,就这样的事情而言,它首先属于微优化的标题。)

例如,以下代码:

代码语言:javascript
复制
if (test_case==="He fell down a well") {
    var i=my_object_array.length-1;
    while(i>=0) {
        my_object_array[i].say("He fell down a well did he Lassie?");
        i--;
    }
}

可能会被您的理论编译器重新呈现为:

代码语言:javascript
复制
var x="He fell down a well";
if (a===x) {
    var i=b.length-1;
    while(i>=0) {
        b[i].say(x+" did he Lassie?");
        i--;
    }
}

..。当然,这会增加while循环完成其工作所需的时间。

当然,稍微智能一点的编译器可能会进一步认识到这种陷阱和优化:

代码语言:javascript
复制
var x="He fell down a well";
var x1=x+" did he Lassie?";
if (a===x) {
    var i=b.length-1;
    while(i>=0) {
        b[i].say(x1);
        i--;
    }
}

不管怎样,在我看来,一个好的javascript编译器首先会针对performance优化代码,其次才会针对字符数进行优化。由于这是一个优化,主要是为了改善字符计数,我认为可能根本没有足够的需求,以保证人们谁维护关闭和YUI压缩器的时间。

票数 2
EN

Stack Overflow用户

发布于 2010-07-21 11:25:11

压缩工具有其局限性,您可以找到一个。您应该为字符串创建自己的变量,然后工具将压缩变量名。

代码语言:javascript
复制
Eg
var msg_wrong = "Wrong answer",
    msg_very_wrong = msg_wrong + "!!!";
alert (msg_wrong);
alert (msg_very_wrong);


// "msg_wrong" and "msg_very_wrong" variable names will be compressed
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3296054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档