【问题标题】:Variable name declaration for key in associative array关联数组中键的变量名声明
【发布时间】:2013-02-24 01:05:45
【问题描述】:

我在 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'
        ]
    }

【问题讨论】:

  • 请注意,为了简洁起见,我在解释中省略了一些变量的声明,因为我了解系统(它非常复杂),我只需要知道如何动态在for() 循环中命名数组键,其余部分都可以正常工作。
  • 为什么不在for 循环中使用key 变量?如果您打算使用“命名键”(即非数字索引),您应该说 devCssFiles = {} 以使用对象而不是数组。但无论哪种方式,您的代码都应该创建一个名称等于表达式 '../'+thisTheme._name+'/assets/css/main.css' 的结果的属性。

标签: javascript debugging syntax web


【解决方案1】:

出现语法错误:

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'; 

【讨论】:

    【解决方案2】:

    我想你想要

    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 是一个数组,但您确实在其上创建了一个非数字属性。

    【讨论】:

      猜你喜欢
      • 2020-08-06
      • 1970-01-01
      • 2014-03-19
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-20
      • 2011-10-16
      相关资源
      最近更新 更多