Javascript 为什么属性访问器不适用于对象文字

Javascript 为什么属性访问器不适用于对象文字,javascript,Javascript,当我创建一个对象时,将其指定给一个变量,然后一切正常: var obj = {"a": 1}; obj.a; // 1 但当我删除该变量时,它不再起作用: {"a": 1}.a // Uncaught SyntaxError: Unexpected token : 如果我将对象文字括在括号中,它会再次起作用: ({"a": 1}).a // 1 我认为区别在于对象文本被解释为一个块,而解释器试图执行“a”:1部分,这显然是错误的。添加括号将强制创建对象 我走对了吗?将某个对象视为块还是对象

当我创建一个对象时,将其指定给一个变量,然后一切正常:

var obj = {"a": 1};
obj.a; // 1
但当我删除该变量时,它不再起作用:

{"a": 1}.a // Uncaught SyntaxError: Unexpected token :
如果我将对象文字括在括号中,它会再次起作用:

({"a": 1}).a // 1
我认为区别在于对象文本被解释为一个块,而解释器试图执行
“a”:1
部分,这显然是错误的。添加括号将强制创建对象


我走对了吗?将某个对象视为块还是对象的规则是什么?

i第一个CA有一个表达式,第二个CA是块语句,第三个CA也是表达式。你可以在整个表达式之外使用paren,比如
({a:1}.a)
,或者使用一个操作符来强制表达式求值,比如
void{a:1}.a
@NinaScholz我不确定这个void是如何工作的,你能提供一些例子吗?@Kinduser,例如,你可以看看这里:““规则是什么?”-表达式语句不能以
{