Javascript 为什么不是';在这个对象文字赋值之后插入分号吗?

Javascript 为什么不是';在这个对象文字赋值之后插入分号吗?,javascript,syntax,Javascript,Syntax,以下面的Javascript代码为例: foobar={} [“一”、“二”]。forEach(项目=>{ console.log(项目) })解析器认为您的意思是: foobar.two // foobar['two'] = foobar.two 在行动中: foobar = {one:1,two:2} ["one", "two"] // returns 2 你可以这样想: obj = {}; obj.foo = 1; obj['foo']; //

以下面的Javascript代码为例:

foobar={}
[“一”、“二”]。forEach(项目=>{
console.log(项目)

})
解析器认为您的意思是:

foobar.two // foobar['two'] = foobar.two
在行动中:

foobar = {one:1,two:2}
["one", "two"] // returns 2
你可以这样想:

obj = {};
obj.foo = 1;
obj['foo']; // equals 1
obj;['foo']; // equals obj {foo:1}, ['foo']

在解析器视图中,当您不添加
,解析器会将其视为:

{}["one", "two"]
空对象的索引不可用。因此,从技术上讲,它是一个参考错误,因为它不存在或未定义。因此,这实际上被解释为:

undefined.forEach(...)

方括号用于属性访问以及数组文本。我想你可以说这是一个固有的歧义,这就是口译员处理它的方式。