这就是对象文字语法的样子:
var x = {property:value};
现在,如果我错了,请纠正我,但我在看的是“var”这个词,这似乎意味着“变量”。这是否意味着从根本上说“对象”是变量(需要注意的是它们的行为类似于数组)?我最近问了一个关于变量是否是对象的问题,而且每个人都说没有。
但奇怪的是,在创建对象文字时使用关键字“var”,如果它们不是变量(我现在假设),为什么如果对象文字不是某种方式,ecmascript会包含此用法或其他变量?这似乎在语法上令人困惑。
答案 0 :(得分:2)
对象{ property: value }
不是变量,而是x
,而var
就是这个变量。 var
创建一个变量,并可选择为其赋值; x
是变量,{ property: value }
是您分配给它的对象。该对象与变量无关。考虑
var x = 5;
5
不是变量。
var x = null;
null
不是变量。
console.log({ foo: 70 }.foo + " boxes");
此处不涉及变量,但 是对象文字,就像70
是数字文字而" boxes"
是字符串文字。
答案 1 :(得分:0)
此处的变量为x
。您声明x
,然后将其指定为指向对象文字。
请记住,通过提升,您的代码最终会像这样处理:
var x;
x = {property:value};
正如您所看到的,将x
设置为什么,或者即使您根本没有设置它也无关紧要。 var x
在名为x
的当前作用域中声明一个变量。