【问题标题】:How to initialize array variable如何初始化数组变量
【发布时间】:2015-01-05 15:33:44
【问题描述】:

我想在 javascript 中动态初始化一个变量数组。我不断收到意外的令牌非法令牌错误。

在我当前的脚本中,serviceLimit = 10;,但它可以随时更改。

尝试 #1

var jqSvcPhrase = {};
for(i=1; i<=serviceLimit; i++) {
  jqSvcPhrase[+ i +] = ''; // produces - Uncaught SyntaxError: Unexpected token ]
}

尝试 #2

var jqSvcPhrase = {};
for(i=1; i<=serviceLimit; i++) {
  jqSvcPhrase\[+ i +\] = ''; // produces - Uncaught SyntaxError: Unexpected token ILLEGAL
}

尝试 #3

var jqSvcPhrase = {};
for(i=1; i<=serviceLimit; i++) {
  jqSvcPhrase\\[+ i +\\] = ''; // produces - Uncaught SyntaxError: Unexpected token ILLEGAL
}

【问题讨论】:

  • i 是整数而不是字符串
  • 你不想在 jQuery 中这样做。您正在尝试在 Javascript 中执行此操作...

标签: javascript arrays for-loop


【解决方案1】:

i 是整数类型,因此不需要串联。试试这个:

var jqSvcPhrase = {};
for (i = 1; i <= serviceLimit; i++) {
      jqSvcPhrase[i] = '';
}

【讨论】:

    【解决方案2】:

    呃...+s 是怎么回事?

    var jqSvcPhrase = {};
    for(i=1; i<=serviceLimit; i++) {
      jqSvcPhrase[i] = '';
    }
    

    【讨论】:

    • 只是复制和粘贴之前有效的代码。
    • @H.Ferrence 这是否意味着代码在某处被评估?我为你的代码 D 感到抱歉:
    • 不使用 eval 但感谢您的同情和关注@aduch :)
    【解决方案3】:

    首先你声明的是一个对象而不是一个数组。 它应该是var jqSvcPhrase = [];。 此外,不需要+。必须是jqSvcPhrase[i]

    【讨论】:

    • 对象仍然可以通过索引访问。
    • “我想动态初始化一个变量数组[...]”——当你得到一个对象时你将无法使用数组函数。如果可能,但最好在这里小心
    【解决方案4】:

    为什么要使用大括号?对数组使用方括号。

    var jqSvcPhrase = [];
    for(i=1; i<=serviceLimit; i++) {
          jqSvcPhrase[i] = '';
    }
    

    【讨论】:

      【解决方案5】:

      数组语法(Manual):

      [element0, element1, ..., elementN] 
      new Array(element0, element1[, ...[, elementN]]) 
      new Array(arrayLength)
      

      这应该是:

      var jqSvcPhrase = new Array(serviceLimit);
      

      初始化值是有意义的:

      for (x in jqSvcPhrase) { x = ''; }
      

      【讨论】:

        猜你喜欢
        • 2013-09-20
        • 2019-05-17
        • 2022-08-11
        • 2014-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-08
        相关资源
        最近更新 更多