括号如何在数组中工作? (JavaScript的)

时间:2011-08-04 22:06:56

标签: javascript

如果this.array[0],我不明白1等于this.array[0] = [(2,1)]的原因? Javascript如何处理2以及如何使用它?括号如何在数组内部工作?

如果前面的布尔值为true或false,我想用X做不同的事情。 this.array[0] = [(true, X)]this.array[0] = [(false, X)]

5 个答案:

答案 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)

它不是parens,它是令人难以置信的神秘逗号。逗号将做的是它将依次评估每个表达式,并返回最后一个表达式的结果。

你的代码片段是一个bug,或者是一个屁股。它是那种很少有用的东西,可能甚至不应该在那些时候使用,因为它对人们来说有多么混乱。

答案 3 :(得分:1)

我想你想要array[0] = [2,1]

答案 4 :(得分:0)

在javascript中,表达式

(2, 1)

评估为1。在括号将其转换为数组之前,括号会使表达式2, 1得到评估。

你真的想要

this.array[0] = [false, X];