Javascript 我们为什么要使用;var";在对象文字符号中,如果对象文字不是变量?

Javascript 我们为什么要使用;var";在对象文字符号中,如果对象文字不是变量?,javascript,Javascript,这是对象文字语法的外观: var x = {property:value}; 现在,如果我错了,请纠正我,但我看到的是“var”这个词,这似乎意味着“variable”。这是否意味着从根本上说“对象”是变量(注意它们的行为类似于数组)?我最近问了一个关于变量是否是对象的问题,每个人都说不是 但奇怪的是,在创建对象文字时使用了关键字“var”,如果它们不是变量(我现在假设它们是变量),那么如果对象文字不是以某种方式或其他变量,ecmascript为什么要合并这种用法?这在语法上似乎很混乱。对象{

这是对象文字语法的外观:

var x = {property:value};
现在,如果我错了,请纠正我,但我看到的是“var”这个词,这似乎意味着“variable”。这是否意味着从根本上说“对象”是变量(注意它们的行为类似于数组)?我最近问了一个关于变量是否是对象的问题,每个人都说不是


但奇怪的是,在创建对象文字时使用了关键字“var”,如果它们不是变量(我现在假设它们是变量),那么如果对象文字不是以某种方式或其他变量,ecmascript为什么要合并这种用法?这在语法上似乎很混乱。

对象
{property:value}
不是变量,而是
x
,这就是
var
所指的
var
创建一个变量,并可选地给它一个值
x
是变量,
{property:value}
是分配给它的对象。对象与变量无关。考虑

var x = 5;
5
不是一个变量

var x = null;
console.log({ foo: 70 }.foo + " boxes");
null
不是变量

var x = null;
console.log({ foo: 70 }.foo + " boxes");

这里没有涉及变量,但是有一个对象文本,就像
70
是一个数字文本,而
“box”
是一个字符串文本一样。

这里的变量是
x
。您正在声明
x
,然后将其指定给指向对象文字

记住,在提升过程中,您的代码最终会被如下处理:

var x;
x = {property:value};

如您所见,将
x
设置为什么并不重要,即使您根本没有设置它
var x
在当前范围内声明了一个名为
x

的变量,非常感谢,我想我现在明白了。(顺便说一句,我太快按了return,它发送了我的消息,我还没有准备好响应)@AllanSocks,如果你创建了and数组,数组将不是变量,它将是你分配数组的任何对象<代码>变量x=[“测试”、“测试2”、“测试3”]。。。数组就是变量值。对象就是对象,对象就是值。变量是一个位置,您正在为其赋值。也可以使用不带变量的对象文字-它们是基本表达式,可以用作函数参数等。