Javascript 是否可以压缩代码以允许多个变量,而不是每个变量一行?

Javascript 是否可以压缩代码以允许多个变量,而不是每个变量一行?,javascript,Javascript,我正在使用一个小脚本,使用以下代码将自定义选择添加到dropbox if (typeof customsum1 != "undefined") { editsummAddOptionToDropdown(dropdown, customsum1); } if (typeof customsum2 != "undefined") { editsummAddOptionToDropdown(dropdown, customsum2); } if (typeof customsum3 != "unde

我正在使用一个小脚本,使用以下代码将自定义选择添加到dropbox

if (typeof customsum1 != "undefined") { editsummAddOptionToDropdown(dropdown, customsum1); }
if (typeof customsum2 != "undefined") { editsummAddOptionToDropdown(dropdown, customsum2); }
if (typeof customsum3 != "undefined") { editsummAddOptionToDropdown(dropdown, customsum3); }

等等。这可以通过添加更多行来扩展,但由于变量具有相同的格式,是否有方法将其压缩,以便理论上允许无限的自定义选择,只要设置的变量遵循customsum#格式?

使用数组和循环:

var sums = [customsum1, customsum2, customsum3];

for (var i=0; i<sums.length; i++) {
    if (typeof sums[i] !== 'undefined') {
         editsummAddOptionToDropdown(dropdown, sums[i]);
    }
}
var总和=[customsum1,customsum2,customsum3];

对于(var i=0;i假设这些是全局变量,可以使用循环:

for( var i=1; i<=3; i++) {
    if( typeof window['customsum'+i] != "undefined") editsummAddOptionToDropdown(dropdown,window['customsum'+i]);
}

for(var i=1;i您是否尝试过使用循环?这种方法需要对
数组进行硬编码,这样的方法不能满足op对理论上无限个元素的请求。typeof[anything]始终返回“object”-typeof的正确用法是:typeof变量。我编辑了这个,但似乎其他人更快了。@这些元素必须添加到某个地方。数组可以通过不同的方式生成。(Kolink显示了一个使用“全局变量”的示例)。在任何情况下,这种降低水平通常是足够的。@Madbreaks请参见Kolink回答的第二部分,其中他/她暗示第一种方法“不可取”@Madbreaks-代码必须写在某个地方。如果使用变量,几乎肯定必须硬编码。出于说明目的,硬编码数组就足够了。显然数组可以动态生成。这不是重点。重点是使用数组而不是单个变量。我同意Matt的答案似乎是正确的如果在注释后添加了更多变量,我将需要对脚本进行硬编码。使用此代码,我假设我可以用
var customsum
correct?@user1944206替换customsum1、customsum2等的声明,而不是使用(可能是无限的)变量遵循一种通用的命名模式,实际上应该首先将值存储在数组中。
var customsum = [
    /* what you normally have for customsum1 */,
    /* same for customsum2 */,
    ...
];
for( var i=0, l=customsum.length; i<l; i++) {
    if( typeof customsum[i] != "undefined") editsummAddOptionToDropdown(dropdown,customsum[i]);
}