Javascript浓缩 - 在一行中定义许多变量

时间:2013-07-26 17:53:00

标签: javascript performance function definitions

我们通常理解javascript中的函数用于通过单个调用执行代码块。但是,我目前正在一个包含许多函数的系统中工作,这些函数需要定义很多变量,因此我看到了很多重复代码。我喜欢把变量声明放在一个函数中,这样它们就不会占用大量的空间,但是它们甚至可能类似于什么?

3 个答案:

答案 0 :(得分:1)

  

我很乐意将变量声明放在一个函数中,这样它们就不会占用大量的空间,但是它们甚至可能类似于什么?

如果你的意思是:

function one() {
   var a, b, c, d, e, f;
   // ...
}
function two() {
   var a, b, c, d, e, f;
   // ...
}

(例如,每个函数都有自己的变量副本。)

......你想要

// Doesn't work
function declare() {
   var a, b, c, d, e, f;
}
function one() {
    declare();
    // ...use a, b, etc. here
}
function two() {
    declare();
    // ...use a, b, etc. here
}

不,你做不到。

如果在多个位置使用相同的变量集,您可以考虑将变量封装在对象中。事实上,整个事情听起来像是可能被重构为一个对象。

但没有太多的重构:

function declare() {
    return {
        a: /*...*/,
        b: /*...*/,
        c: /*...*/,
        d: /*...*/,
        e: /*...*/,
        f: /*...*/,
    };
}
function one() {
    var o = declare();
    // ...use o.a, o.b, etc.
}
function two() {
    var o = declare();
    // ...use o.a, o.b, etc.
}

但同样,这是影响最小的解决方案。就像那样,如果你看一下整体代码的想法,你可以将一些东西组织成对象,你会发现一种比上面更不人道的方法。

答案 1 :(得分:0)

如果我理解你想做什么,最好不要手动完成。您可以使用缩小器,例如uglify或Google的Closure Compiler。这些工具可用于显着优化JS文件的大小,并且可以保持原始代码的可读性。

答案 2 :(得分:0)

有几种解决方案,也许最简单的解决方案就是依赖闭包:

(function(){}
    // declare all vars here
    var a = 1, b = 2;

    // var a will be available here
    function foo() {
        alert(a);
    }

    foo();
}());