Javascript 动态组装var

Javascript 动态组装var,javascript,Javascript,如何在运行时不使用eval在Javascript中组装变量 var lc = $('.bezeichnung-1').length; for (var lt = 1; lt <= lc; lt++) { eval("var neuerwert"+lt+"=0;"); // this works but I don't want to use it because I read that eval is bad } var lc = $('.bezeichnung-1').len

如何在运行时不使用eval在Javascript中组装变量

var lc = $('.bezeichnung-1').length;
for (var lt = 1; lt <= lc; lt++) {
    eval("var neuerwert"+lt+"=0;"); // this works but I don't want to use it because I read that eval is bad
}


var lc = $('.bezeichnung-1').length;
for (var lt = 1; lt <= lc; lt++) {
    window["var neuerwert"+lt] = 0; // this does not work
}
如何在运行时不使用eval在Javascript中组装变量

var lc = $('.bezeichnung-1').length;
for (var lt = 1; lt <= lc; lt++) {
    eval("var neuerwert"+lt+"=0;"); // this works but I don't want to use it because I read that eval is bad
}


var lc = $('.bezeichnung-1').length;
for (var lt = 1; lt <= lc; lt++) {
    window["var neuerwert"+lt] = 0; // this does not work
}
你没有,但你可以让它成为某种东西的财产

如果这些已在全局范围内,则它们已经是属性:

var lc = $('.bezeichnung-1').length;
for (var lt = 1; lt <= lc; lt++) {
    window["neuerwert"+lt] = 0;
    // -----^ no `var` keyword
}
还是数组

var neuerwert = [
    /*...value here...*/,
    /*....value here...*/
];
然后

var lc = $('.bezeichnung-1').length;
for (var lt = 1; lt <= lc; lt++) {
    neuerwert[lt] = 0;
}

请注意,数组索引从0开始,因此如果使用数组,则可能必须调整lt。

您试图在我认为应该使用数组的位置使用var

var lc = $('.bezeichnung-1').length;
var neierwert = ();

for (var lt = 1; lt <= lc; lt++) {
    neuerwert[lt]=0; 
}
只有当你通过一个你从外部获取的论点时,评估才是不好的

function badEvalExample(varName, varValue) {
    eval("var " + varName + " = " + varValue);
}
在这种情况下,函数容易受到不稳定/恶意参数的攻击。您的示例非常好,尽管T.J.Crowder的window[neuerwert+lt]解决方案确实更加优雅

但是,我建议不要使用变量名,如something1、something2等。如果需要相同类型的变量列表,最好将它们存储在数组中:something[0]、something[1]、


我认为使用eval的正确措辞不是它不好,而是应该尽量避免使用它。

如果我回答这个问题,我担心会发生什么事question@svillamayor我也放弃了。我们不能一天回答十次同样的问题@user:出于好奇,你真的想要var lc=$'.bezeichnung-1'.length;使用类bezeichnung-1查找元素,然后使用结果长度,而不是var lc=$'.bezeichnung'.length-1;使用Bezeichung类查找元素并使用length-1?lt 1的起始值似乎也很奇怪……我很困惑。它们已经不在全球范围内了。这是我第一次定义它们。然而,去掉var效果很好。为什么会这样?@user2164882:但是去掉var效果很好。为什么呢?它们必须在全局范围内,或者您已经在其他代码中将它们指定为窗口属性。窗口[neuerwert+lt]在窗口上查找属性窗口[neuerwert+lt]。全局变量将自动成为窗口属性。您还可以通过执行window.propName=。。。。但要避免这种情况,窗口对象已经过度拥挤。