我在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'
]
}
此处出现语法错误:
var devCssFiles = [],
devCssFiles[ '../'+thisTheme._name+'/assets/css/main.css' ] =
'child_themes/'+thisTheme._name+'/master.less';
问题是devCssFiles = []
需要一个分号(而不是逗号),以便在声明变量命名属性时变量存在。所以应该是
var devCssFiles = [];
devCssFiles[ '../'+thisTheme._name+'/assets/css/main.css' ] =
'child_themes/'+thisTheme._name+'/master.less';
我想你想要
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
是一个数组,但您确实在其上创建了一个非数字属性。