返回哈希时出现意外的令牌{错误

时间:2016-02-02 17:23:55

标签: javascript reactjs

在我的反应代码中,我有以下方法返回哈希:

foo: function() {
     return {{a: 1,b: 2,c: 3}, {d: 4}};
}

return语句的行上,我得到了这个:

Parse Error: Line 141: Unexpected token { while parsing file

为什么会这样?

1 个答案:

答案 0 :(得分:2)

您收到该错误是因为当解析器看到第一个“{”时,它希望下一个找到,而是找到另一个“{”,这是无效的语法。请参阅Object Literals的正确语法。

由于在提供的代码中没有任何描述性足以说明您尝试返回的内容,而您尝试返回哈希,我只能猜测您要么返回4个命名数字:

return { a:1, b:2, c:3, d:4 };

或两个带有命名数字的嵌套对象; 在这种情况下,您必须为每个嵌套对象提供密钥

return { nested_a: { a:1, b:2, c:3 }, nexted_b: { d:4 } };

要了解原因,请考虑将从foo函数接收返回值的代码。

var foo_result = foo();

例如,如果您想访问a,您会如何引用它?对于您要返回的原始对象({ { a:1, b:2, c:3 }, { d:4 } }),将无法引用包含abc的第一个内部对象。

var a_result = foo_result.?.a; // no way to get at that variable

这就是为什么对象中的每个属性都需要的原因。按照上面的例子:

var a_result = foo_result.nested_a.a; // this works

关于数组声明的注意事项

当您看到array literal声明为:

var an_array = [ { a:1, b:2, c:3 }, { d:4 } ];

这没关系,因为数组有一种隐含的方式来引用它们的元素;通过索引

var a_result = an_array[ 0 ].a; // array indices start at 0