【问题标题】:Javascript : expected errorJavascript:预期错误
【发布时间】:2014-04-06 11:20:24
【问题描述】:

我无法解读错误消息Expected :。它在尝试执行下面的代码时发生。我有一串字符,例如"Joe":"HR" 被传递给它

var p = {
    "\"" + m[0] + "\"" + " : " + "\"" + (m[0] = m[1]) + "\""
};

附加代码

for (var key in p) 
            {
                if (p.hasOwnProperty(key))
                {
                client = selectedPackage.Elements.AddNew(key, p[key]);
                client.Update();
                }
            }   

【问题讨论】:

  • = 在对象键分配中?
  • 这段代码应该做什么?
  • @redV - 我正在关注我是否有字符串的示例,例如"Joe":"HR" 并且需要将它们解析为名称值对。我遇到的例子是stackoverflow.com/questions/14020941/…
  • @Barmar - 它的目的是获取一串字符并解析它。我在帖子中添加了附加代码。
  • 我在您提到的问题中没有看到类似的内容。

标签: javascript


【解决方案1】:

您不会通过连接文字的文本来创建具有可变键和值的对象。你必须使用数组样式的赋值:

var p = {};
p[m[0]] = m[1];

【讨论】:

  • 我试过了,它返回的只是[object Object]
  • 当您尝试将对象显示为字符串时,这就是它的样子。
  • 由于client = selectedPackage.Elements.AddNew(key, p[key]); 出现错误,我如何知道在这种情况下是否传递了值?我得到的错误是invalid type
  • 如果这是 Firefox 控制台,您应该可以点击 [object Object] 以获取更多信息。
  • @Tom Leese - 不幸的是我不能,因为它是第三方工具的脚本编辑器,所以调试受到限制。
【解决方案2】:

{} 是一个对象,因此它需要一个键值:

{
    "key": "value"
}

在你的情况下,键是"\"" + m[0] + "\"" + " : " + "\"" + (m[0] = m[1]) + "\""(实际上是无效的,这个错误有点不清楚),所以你也需要指定一个值。

我怀疑你想要这个(来自你的字符串,看起来像 JSON):

var p = { };
p[m[0]] = m[1];

【讨论】:

  • 您也不能使用表达式作为对象文字中的键,键必须是标识符或文字字符串。
  • 所以看起来他错过了关键,而串联应该是价值。
  • @Tom Leese - 我得到的只是[object Object]
  • 正如 Barmar 所说,当您尝试获取对象的字符串表示时,您会得到这样的结果。听起来这是 JavaScript 控制台的输出?
  • @Tom Leese - 这是正确的,当它遇到下一个代码块时会引发错误。
【解决方案3】:

您正在定义一个对象,但只有一个没有值的键,例如你正在尝试做的事情:

var p = {
   key : value
}

但你的代码只是

var p = {
   key
}

您有一个 :,但由于它位于字符串 (" : ") 中,因此不算数。

【讨论】:

  • 好吧,如果 " : " 应该是 key:value 分隔符,那么将 ... + " : " + ... 改为 ... : ...
  • 我试过"\"" + m[0] + "\"" + : + "\"" + (m[0] = m[1]) + "\"" 也没用
  • 删除+。你现在正试图连接一个裸露的:,这是非法的语法。
  • 我尝试了var p = { "\"" + m[0] + "\"" : "\"" + (m[0] = m[1]) + "\"" };,但它仍然抛出错误。你可以发布一个例子吗?我可能忽略了一些东西。
  • 你为什么要连接所有这些引号,你为什么要在那里做作业(m[0]=m[1])?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-01
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
相关资源
最近更新 更多