为了账号安全,请及时绑定邮箱和手机立即绑定

js是如何判断代码块和对象的?

js是如何判断代码块和对象的?

子衿沉夜 2018-10-23 13:10:11
看上图的结果。第一个测试表示代码块。a:1可以理解为js保留的goto写法。所以看到的不加括号的,都是被解释为了代码块。加上个括号就被解释为了对象。按照我的理解。为表达式加上括号代表立即执行。为语句加上括号 仅代表分组操作符。初步理解 代码块是无法加括号的,所以此处自动解释为了对象?以上的结论与我一直以来的理解所违背。
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

其实问题是在于{}的语法二意性。
你在控制台里输入{a:1}[1]的时候,{}并不是对象字面量的语法,而是block,类似于这种

{    // a是一个label
    a:      1;
};
[1];

如果{}前面没有其他符号,就会被当成block语法,代表开一个新的作用域。

你的{a:1,}[]代码被解析成这样:

{    // label
    a:        1,
};

[];

很明显语法错误。


查看完整回答
反对 回复 2018-11-04
  • 1 回答
  • 0 关注
  • 688 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信