Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript压缩-在一行中定义多个变量_Javascript_Performance_Function_Definitions - Fatal编程技术网

Javascript压缩-在一行中定义多个变量

Javascript压缩-在一行中定义多个变量,javascript,performance,function,definitions,Javascript,Performance,Function,Definitions,我们通常理解javascript中的函数用于通过单个调用执行代码块。然而,我目前在一个包含许多函数的系统中工作,这些函数需要定义许多变量,因此我看到了很多重复代码。我希望将变量声明放在函数中,这样它们就不会占用大量空间,但类似的事情是否可能发生?如果我正确理解了您想要做的事情,那么最好不要手动执行。您可以只使用一个小型编译器,例如uglify或Google的闭包编译器。这些工具可用于显著优化JS文件的大小,并且您可以保持原始代码的可读性。有几种解决方案,也许最简单的解决方案就是依赖闭包: (fu

我们通常理解javascript中的函数用于通过单个调用执行代码块。然而,我目前在一个包含许多函数的系统中工作,这些函数需要定义许多变量,因此我看到了很多重复代码。我希望将变量声明放在函数中,这样它们就不会占用大量空间,但类似的事情是否可能发生?

如果我正确理解了您想要做的事情,那么最好不要手动执行。您可以只使用一个小型编译器,例如uglify或Google的闭包编译器。这些工具可用于显著优化JS文件的大小,并且您可以保持原始代码的可读性。

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

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

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

    foo();
}());
我很想把变量声明放在一个函数中,这样它们就不会占用一大堆空间,但是类似的东西可能吗

如果你的意思是:

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.
}

但同样,这是影响最小的解决方案。这就像是,如果你考虑一下你的整个代码,你可以把东西组织成一些对象,你会发现一种比上面更不人为的方式。

“我目前在一个包含许多函数的系统中工作,这些函数需要定义许多变量,所以我看到了很多重复的代码。”代码值1024个字。不清楚你在描述什么。表演是最好的,我也这么想。如果对象是在所有函数的公共作用域中声明的,则甚至不需要
declare
函数。在这种情况下,此解决方案将非常有效。谢谢你的帮助@巴法雷托:不,这有很大的不同。使用
declare
功能,
one
two
获得各自的VAR副本。它们有一个共同的范围,可以共享。(这就是上面的“例如,每个函数都有自己的变量副本”部分的内容。)