看上图的结果。第一个测试表示代码块。a:1可以理解为js保留的goto写法。所以看到的不加括号的,都是被解释为了代码块。加上个括号就被解释为了对象。按照我的理解。为表达式加上括号代表立即执行。为语句加上括号 仅代表分组操作符。初步理解 代码块是无法加括号的,所以此处自动解释为了对象?以上的结论与我一直以来的理解所违背。
1 回答
沧海一幻觉
TA贡献1824条经验 获得超5个赞
其实问题是在于{}的语法二意性。
你在控制台里输入{a:1}[1]
的时候,{}
并不是对象字面量的语法,而是block,类似于这种
{ // a是一个label a: 1; }; [1];
如果{}前面没有其他符号,就会被当成block语法,代表开一个新的作用域。
你的{a:1,}[]
代码被解析成这样:
{ // label a: 1, }; [];
很明显语法错误。
添加回答
举报
0/150
提交
取消