我们通常的理解是,javascript 中的函数用于通过一次调用来执行代码块。但是,我目前正在一个包含许多函数的系统中工作,这些函数需要定义许多变量,所以我看到了很多重复代码。我很想将变量声明放在一个函数中,这样它们就不会占用一大堆空间,但是类似的东西甚至可能吗?
问问题
114 次
3 回答
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.
}
但同样,这是影响最小的解决方案。就像这样,如果您以可以将事物组织成对象的想法来查看您的整体代码,您会发现一种比上面更不人工的方式。
于 2013-07-26T18:03:21.507 回答
0
如果我正确理解您想要做什么,最好不要手动执行。你可以只使用一个 minifier,例如 uglify 或 Google 的 Closure Compiler。这些工具可用于显着优化 JS 文件的大小,并且可以保持原始代码的可读性。
于 2013-07-26T17:58:34.020 回答
0
有几种解决方案,也许最简单的一种只是依赖闭包:
(function(){}
// declare all vars here
var a = 1, b = 2;
// var a will be available here
function foo() {
alert(a);
}
foo();
}());
于 2013-07-26T17:59:36.933 回答