在我的反应代码中,我有以下返回哈希的方法:
foo: function() {
return {{a: 1,b: 2,c: 3}, {d: 4}};
}
然而,在return
声明的行上,我得到了这个:
Parse Error: Line 141: Unexpected token { while parsing file
为什么会这样?
您会收到该错误,因为当解析器看到第一个" {
"时,它希望找到下一个键,但会找到另一个" {
",这是无效的语法。请参阅对象文本的正确语法。
由于提供的代码中没有任何足够的描述性来告诉您在尝试返回哈希之外要返回的内容,因此我只能猜测您打算返回 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
关于数组声明的注意事项
当您看到声明如下的数组文本时:
var an_array = [ { a:1, b:2, c:3 }, { d:4 } ];
这是可以的,因为数组有一种隐式的方式来引用它们的元素;通过它们的索引。
var a_result = an_array[ 0 ].a; // array indices start at 0