在我的反应代码中,我有以下方法返回哈希:
foo: function() {
return {{a: 1,b: 2,c: 3}, {d: 4}};
}
在return
语句的行上,我得到了这个:
Parse Error: Line 141: Unexpected token { while parsing file
为什么会这样?
答案 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 } }
),将无法引用包含a
,b
和c
的第一个内部对象。
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