for (var i in variables) {
eval('var ' + i + ' = variables[i]');
}
基本上,我想将变量属性转移到局部变量。如何在没有eval的情况下执行此操作()
是否有使用的eval()
或者其中这些是替代更好:
1.
var _ = variables;
for (var i = 0; i < 100000; i++) {
_.test1();
_.test2();
_.test3();
}
2.
with (variables) {
for (var i = 0; i < 100000; i++) {
test1();
test2();
test3();
}
}
var test1 = variables.test1,
test2 = variables.test2,
test3 = variables.test3;
for (var i = 0; i < 100000; i++) {
test1();
test2();
test3();
}
4.
for (var i in variables) eval('var ' + i + ' = variables[i]');
for (var i = 0; i < 100000; i++) {
test1();
test2();
test3();
}
为什么在这个世界上你想要这样做? – 2010-08-08 18:22:38
如果'变量'真的很长,如:namespace.constructors.blah.dramatic.variables 并且变量的内容被引用很多,那么将它的内容放在局部变量中很有用。 可以使用'with'关键字,但有它自己的问题。 该示例很简单。 – 2010-08-08 18:29:41
你应该避免使用'eval()'util,你知道JS很好,知道什么时候它是绝对必要的,因为它的速度慢,而且它的使用通常被认为是不好的做法。 – xj9 2010-08-08 20:01:21