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

https://img1.mukewang.com/5bdea549000173fe05560466.jpg

看上图的结果。第一个测试表示代码块。a:1可以理解为js保留的goto写法。

所以看到的不加括号的,都是被解释为了代码块。
加上个括号就被解释为了对象。

按照我的理解。
为表达式加上括号代表立即执行。
为语句加上括号 仅代表分组操作符。

初步理解 代码块是无法加括号的,所以此处自动解释为了对象?
以上的结论与我一直以来的理解所违背。


子衿沉夜
浏览 693回答 1
1回答

沧海一幻觉

其实问题是在于{}的语法二意性。你在控制台里输入{a:1}[1]的时候,{}并不是对象字面量的语法,而是block,类似于这种{    // a是一个label     a:      1; }; [1];如果{}前面没有其他符号,就会被当成block语法,代表开一个新的作用域。你的{a:1,}[]代码被解析成这样:{    // label     a:        1, }; [];很明显语法错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript