在我的Javascript控制台(在Chrome中),我尝试这样做:
{ 'a' : 1 }和获取SyntaxError: Unexpected token :
但这是可行的:
['a', 1]怎么回事?
发布于 2013-06-30 00:03:14
这是因为花括号有两个用途--或者引入一个块,或者作为一个对象文字的开始(后者是一个表达式)。
控制台无法分辨出是哪一个,因此它假定了一个语句块,直到后来才发现该块的内容不能被解析为语句。
对于带有方括号的数组文字,这种歧义不存在。
可以通过改变上下文以使得{...}必须被解释为表达式而不是语句块,例如通过使其成为运算符的or、将其括在圆括号中、或将其作为函数参数传递等来解决歧义。
发布于 2013-06-30 00:02:23
这是一个数据块
{
var x = 'stuff'
function doStuff(arg) { alert(arg) }
doStuff(x)
}它会提醒stuff。
现在,关于您的示例: JavaScript认为它是一个块,如下所示:
{
'a' : 1
}因为'a' : 1 is a valid语句,所以它失败了。
请注意,如果您这样做
'x' + { 'a' : 1 }它是有效的,因为块不可能在+之后出现。
发布于 2013-06-30 00:03:35
为此,您可以使用new Object({'a' : 1})。
https://stackoverflow.com/questions/17382024
复制相似问题