为什么不允许在逗号分隔的var中声明属性?

时间:2014-04-16 05:20:37

标签: javascript

可能是一个非常愚蠢的问题但是这一次我认为用逗号分隔的var声明任何东西是可以的,就像这样: -

var x = 2, y = "hello world";

但我很惊讶地发现这是不可能的。

var obj = {};
var x = 2, y = "hello world", obj.myProp = "good bye";

或者: -

var obj = {};
var x = 2, y = "hello world", obj["myProp"] = "good bye";

任何人都知道这是为什么?

3 个答案:

答案 0 :(得分:3)

当您执行代码时,您将得到的错误是

SyntaxError: Unexpected token .

因为var是变量声明语句,并且在var语句中,只允许有效的变量名。 obj.myPropobj["myProp"]显然是无效的变量名称,因为变量&{39}中不允许使用."[]。的名字。您可以在ECMA 5.1标准规范的Identifier Names and Identifiers部分中阅读有关变量名称的更多信息。

此外,您无法在当前范围内声明obj.myProp,因为myPropobj的属性。如果要在obj上定义变量,只需单独定义即可。

如果你真的想在一行中分配所有值,那么将声明与初始化分开,如下所示

var obj = {}, x, y;
x = 2, y = "hello world", obj.myProp = "good bye";

答案 1 :(得分:1)

因为'obj'是一个Object而且已经定义了。 当你添加属性时,你又将它分配给'var',这是不正确的。

答案 2 :(得分:1)

因为在同一个块中多次声明变量。

喜欢

Int32 a; // Declare a variable(a) type of Int32.

再次声明一个不同的变量(b)并初始化变量(a)

Int32 b,a=10 ; // a variable is declared more than once.

我们的编程规则::我们不能在同一个块中多次使用相同的名称声明相同的变量。它非常简单但合乎逻辑