可能是一个非常愚蠢的问题但是这一次我认为用逗号分隔的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";
任何人都知道这是为什么?
答案 0 :(得分:3)
当您执行代码时,您将得到的错误是
SyntaxError: Unexpected token .
因为var
是变量声明语句,并且在var
语句中,只允许有效的变量名。 obj.myProp
和obj["myProp"]
显然是无效的变量名称,因为变量&{39}中不允许使用.
,"
,[
和]
。的名字。您可以在ECMA 5.1标准规范的Identifier Names and Identifiers部分中阅读有关变量名称的更多信息。
此外,您无法在当前范围内声明obj.myProp
,因为myProp
是obj
的属性。如果要在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.
我们的编程规则::我们不能在同一个块中多次使用相同的名称声明相同的变量。它非常简单但合乎逻辑