数组行为混乱

时间:2015-03-25 07:00:46

标签: javascript

在编码测试中,我最近遇到一个问题,要求我找出将在控制台中打印的内容。问题如下。我不明白下面的代码将如何被理解和执行。

需要帮助

var arr = ["a" , "b" , "c" , "d"][1,2,3];
console.log(arr);

这个定义甚至意味着什么?

2 个答案:

答案 0 :(得分:13)

JS中的数组是一维的。

所以var arr = ["a" , "b" , "c" , "d"][1,2,3];

此处[1,2,3]代表索引。

逗号是前面最少的运算符,因此[1,2,3]会返回3(即最右边的元素)。

因此

结果会返回3

的索引d的值
Update:

让我们看一下comma运营商的更多要点:

From MDN:

  

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

所以,这意味着:

var a = (10, 18);
a; //18

另请注意,在分配给变量时,在括号内提及它们至关重要。

如果你尝试这样的话:

var a = 1,2,3;
a; // will return 1

因此,使用()包装它们非常重要。

您何时可以使用,运营商?

  

如果要包含多个,可以使用逗号运算符   需要单个表达式的位置中的表达式。最多   该运算符的常见用法是在a中提供多个参数   for loop。

for (var i = 0, j = 9; i <= 9; i++, j--)

既然您已了解comma运算符,那么让我们看一些例子来测试我们的理解:

1.  var a = (1,3)/(2,1);
    a // what will be the o/p

2.  var a = ["Stack", "OverFlow","is","Awesome"][1,3,2][2,0]
    a // What will be the o/p

3.  var a = (true,0,1), b, c;
    if(b,c,a) {
        console.log("Will it execute?");
    }

答案 1 :(得分:5)

你的例子让我措手不及。这是另一个说明正在发生的事情的例子。基本上,逗号分隔值列表的计算结果为最后一个值。

if (false, false, true) {
    console.log("hello")
} 
// --> "hello"