var obj = { prop = [1,2,3] };
上面的代码存在一个打字错误,应该使用冒号而不是=
。但让我惊讶的是VM的错误消息:
var obj = { prop = [1,2,3] };
^^^^^^^^^^^^^^
SyntaxError: Invalid shorthand property initializer
我搜索了“JavaScript 简写属性”,但这个术语对我来说仍然不清楚。在这个错误信息的上下文中,“简写属性”是什么意思?
var obj = { prop = [1,2,3] };
上面的代码存在一个打字错误,应该使用冒号而不是=
。但让我惊讶的是VM的错误消息:
var obj = { prop = [1,2,3] };
^^^^^^^^^^^^^^
SyntaxError: Invalid shorthand property initializer
我搜索了“JavaScript 简写属性”,但这个术语对我来说仍然不清楚。在这个错误信息的上下文中,“简写属性”是什么意思?
在ES6中,您可以使用简写属性名称,使您能够编写类似于以下内容的代码。
var s = 'abc';
var n = 1;
var o = { s, n }; // This is equivalent to { s: s, n: n }
在您的情况下,prop = [1,2,3]
被解析为一个简写属性(例如上面例子中的s
和n
),但它不是一个正确的属性名。{ s: 'abc', n: 1 }
,对吗? - Jwan622SyntaxError: missing : after property id
:
。正如你所说,应该使用:
而不是=
。prop = [1,2,3]
不是一个IdentifierReference,因此抱怨它可能是有道理的。更有意义的是抱怨它不是更常见形式的PropertyName:
AssignmentExpression或MethodDefinition的PropertyDefinition。由于MDN没有官方解释,我只能猜测这可能意味着什么。
考虑以下内容:
有两种创建数组的方法。
第一种方法(有点冗长):
var cars = new Array("Saab", "Volvo", "BMW");
简单的方法:
var cars = ["Saab", "Volvo", "BMW"];
var person = new Object();
person.firstName = "John";
person.lastName = "Doe";
简单的方法:
var person = {firstName: "John", lastName: "Doe"};