Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在数组初始化中混合使用括号和方括号_Javascript - Fatal编程技术网

Javascript 在数组初始化中混合使用括号和方括号

Javascript 在数组初始化中混合使用括号和方括号,javascript,Javascript,下面的代码段通过混合使用括号和方括号来分配一些值,没有任何错误,但是大多数其他组合(例如,方括号内的括号)根本不起作用 var myItems = []; myItems[5] = ("A1", "B1", ["C1","C2","C3"]); 当我打印这些值时,它们在两个不同的浏览器中完全相同 myItems[5]: C1,C2,C3 myItems[5][0]: C1 myItems[5][1]: C2 myItems[5][2]: C3 myItems[5][2][0]: C myIte

下面的代码段通过混合使用括号和方括号来分配一些值,没有任何错误,但是大多数其他组合(例如,方括号内的括号)根本不起作用

var myItems = [];
myItems[5] = ("A1", "B1", ["C1","C2","C3"]);
当我打印这些值时,它们在两个不同的浏览器中完全相同

myItems[5]: C1,C2,C3
myItems[5][0]: C1
myItems[5][1]: C2
myItems[5][2]: C3
myItems[5][2][0]: C
myItems[5][2][1]: 3
myItems[5][2][2]: undefined
似乎只考虑方括号内的部分。这个结果是由JavaScript标准(ECMA-262)定义的吗?或者这仅仅是解释器/引擎(在我的例子中是Chrome和Firefox)在面对非法使用时所做的事情

var myItems=[];
//myItems[5]=“A1”、“B1”、“C1”、“C2”、“C3”];
我的项目[5]=(“A1”、“B1”、“C1”、“C2”、“C3”);
document.getElementById(“demo”).innerHTML=
“myItems[5]:“+myItems[5]+”
”+ “myItems[5][0]:“+myItems[5][0]+”
”+ “myItems[5][1]:“+myItems[5][1]+”
”+ “myItems[5][2]:“+myItems[5][2]+”
”+ “myItems[5][2][0]:“+myItems[5][2][0]+”
”+ “myItems[5][2][1]:“+myItems[5][2][1]+”
”+ “myItems[5][2][2]:“+myItems[5][2][2]+”
”+ "";

来自

逗号运算符计算其每个操作数(从左到右) 并返回最后一个操作数的值

所以

转向

myItems[5] = (["C1","C2","C3"]);
现在,您已经拥有了一个包含6个元素的数组(未定义5x,并且在第六个位置分配了三个字符串的数组)

这正是你要打印出来的内容。

逗号运算符计算其每个操作数(从左到右) 并返回最后一个操作数的值

所以

转向

myItems[5] = (["C1","C2","C3"]);
现在,您已经拥有了一个包含6个元素的数组(未定义5x,并且在第六个位置分配了三个字符串的数组)


这正是您要打印的内容。

逗号运算符
“计算每个操作数(从左到右)并返回最后一个操作数的值。”(您可以将其视为福音,也可以将其视为。)

根据,分组运算符
()
“控制表达式中计算的优先级”。()

在本例中,由于只有一个表达式被分组,所以分组运算符实际上什么也不做。这是一个简单的逗号分隔的值列表,最后一个是数组。这就是分配的内容


在批量分配变量时,通常会看到逗号运算符,例如
var foo=1、bar=2、baz=3规范规定,即使只返回最后一项,也必须对每个项进行评估“因为它可能具有可观察性”

副作用。“在这种最常见的用例中,每个变量都有分配给它们的值。

逗号运算符
“计算每个操作数(从左到右)并返回最后一个操作数的值。”(您可以将其视为福音,或者。)

根据,分组运算符
()
“控制表达式中计算的优先级”。()

在本例中,由于只有一个表达式被分组,所以分组运算符实际上什么也不做。这是一个简单的逗号分隔的值列表,最后一个是数组。这就是分配的内容


在批量分配变量时,通常会看到逗号运算符,例如
var foo=1、bar=2、baz=3规范规定,即使只返回最后一项,也必须对每个项进行评估“因为它可能具有可观察性”

副作用。“在这种最常见的用例中,每个变量都有分配给它们的值。

这并不能真正回答这个问题。在逗号分隔符上读取将显示它返回最后一个操作数的值,而将数组括在括号中则没有任何作用。我认为这个问题没有被很好地理解。请参见问题的编辑部分@Destroyer:如果您的评论证明了返回最后一个操作数的原因,那么它将更接近于一个答案。之前这一点非常清楚,但是通过查看队列,很容易从一个相对较低的代表性用户那里排除一行答案。充实答案(正如您现在所做的那样)是一种从一开始就防止它们进入低质量队列的好方法。这并不能真正回答问题。在逗号分隔符上读取将显示它返回最后一个操作数的值,而将数组括在圆括号中则没有任何作用。我认为这个问题没有被很好地理解。请参见问题的编辑部分@Destroyer:如果您的评论证明了返回最后一个操作数的原因,那么它将更接近于一个答案。之前这一点非常清楚,但是通过查看队列,很容易从一个相对较低的代表性用户那里排除一行答案。充实答案(正如你现在所做的)是一个很好的方法,可以从一开始就防止他们进入低质量的队列。[你,[尝试过,使用],[方括号]]是的,我知道这一点,但实际上我没有问正确的用法是什么。[你,[尝试过,使用],[方括号]]是的,我知道这一点,但实际上我没有问正确的用法是什么。