如果this.array[0]
,我不明白1
等于this.array[0] = [(2,1)]
的原因?
Javascript如何处理2以及如何使用它?括号如何在数组内部工作?
如果前面的布尔值为true或false,我想用X
做不同的事情。
this.array[0] = [(true, X)]
和this.array[0] = [(false, X)]
。
答案 0 :(得分:5)
该上下文中的括号充当一个语句,其中传递的最后一项是传递的值。
换句话说:
(2, 1) === 1
然后评估2
,所以:
(foo(), bar())
实际上在做:
foo();
return bar();
在这种情况下你想要的是[2,1]
答案 1 :(得分:2)
如果在括号内使用逗号运算符,它将计算两个项并返回第二个项。这很少使用,但使用逗号运算符有两个规范原因:
您可以使用逗号运算符在循环中进行更复杂的登录,如下所示:
for (var i = 0, j = 10; i < a && j > b; i++, j--) { }
您可以在评估条件之前使用逗号运算符执行语句,如下所示:
if (DoX(), CheckIfXHasBeenDoneSuccessfully()) { }
除此之外,逗号运算符基本上是naff。在括号(2,1)
中,评估2和1,忽略2,返回1。你可以在数组中使用括号,但你几乎不会想要在括号内加入逗号。
我相信你想要的是这样的:
var bool = true; //or false, if you like
if(bool){ this.array[0] = X }
else { this.array[0] = Y }
答案 2 :(得分:2)
你的代码片段是一个bug,或者是一个屁股。它是那种很少有用的东西,可能甚至不应该在那些时候使用,因为它对人们来说有多么混乱。
答案 3 :(得分:1)
我想你想要array[0] = [2,1]
。
答案 4 :(得分:0)
在javascript中,表达式
(2, 1)
评估为1
。在括号将其转换为数组之前,括号会使表达式2, 1
得到评估。
你真的想要
this.array[0] = [false, X];