关联数组中键的变量名声明

时间:2013-02-24 01:05:46

标签: javascript debugging syntax web

我在javascript for()循环中运行,需要动态生成以下内容:

devCssFiles[ '../'+thisTheme._name+'/assets/css/main.css' ] = 
'child_themes/'+thisTheme._name+'/master.less';

预期的结果是一个关联数组,可以在父对象内迭代地声明,例如, (thisTheme._name在外部JSON文件中声明,在处理下面的代码时读取,这部分工作正常)

var myConfigObj = {};

for ( var key in thisThemeMetaObj ) {
   var devCssFiles = [],
      devCssFiles[ '../'+thisTheme._name+'/assets/css/main.css' ] = 
   'child_themes/'+thisTheme._name+'/master.less'; 
   myConfigObj[thisTheme._name] = devCssFiles;
}

我试图给出一个完整的解释,但问题很简单,我只是在读取devCssFiles[ '../'+thisTheme._name+'/assets/css/main.css' ] = 'child_themes/'+thisTheme._name+'/master.less';的行中错误地声明了关联数组的命名键

有人可以在这里告诉我正确的语法吗?

预期输出应该是这样的JSON对象:

    myConfigObject: {
        '../themeFoo/assets/css/main.css': [
            'child_themes/themeFoo/master.less'
        ]
    }

2 个答案:

答案 0 :(得分:1)

语法错误在这里:

var devCssFiles = [],
      devCssFiles[ '../'+thisTheme._name+'/assets/css/main.css' ] = 
   'child_themes/'+thisTheme._name+'/master.less'; 

问题是devCssFiles = []需要分号(而不是逗号),以便在声明名为property的变量时变量存在。所以它应该是

var devCssFiles = [];
   devCssFiles[ '../'+thisTheme._name+'/assets/css/main.css' ] = 
   'child_themes/'+thisTheme._name+'/master.less'; 

答案 1 :(得分:0)

我想你想要

var myConfigObj = {};
for ( var key in thisThemeMetaObj ) {
   var thisTheme = thisThemeMetaObj[key],
       devCssFiles = [ 'child_themes/'+thisTheme._name+'/master.less' ]; // array literal
   myConfigObj['../'+thisTheme._name+'/assets/css/main.css'] = devCssFiles;
}

请注意,您的devCssFiles是一个数组,但您确实在其上创建了非数字属性。