如果对象文字不是变量,为什么我们在对象文字表示法中使用“var”?

时间:2014-06-10 22:20:52

标签: javascript

这就是对象文字语法的样子:

var x = {property:value};

现在,如果我错了,请纠正我,但我在看的是“var”这个词,这似乎意味着“变量”。这是否意味着从根本上说“对象”是变量(需要注意的是它们的行为类似于数组)?我最近问了一个关于变量是否是对象的问题,而且每个人都说没有。

但奇怪的是,在创建对象文字时使用关键字“var”,如果它们不是变量(我现在假设),为什么如果对象文字不是某种方式,ecmascript会包含此用法或其他变量?这似乎在语法上令人困惑。

2 个答案:

答案 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的当前作用域中声明一个变量。