Javascript语法:var array = [] .push(foo);

时间:2014-09-02 23:58:53

标签: javascript arrays

foo 是定义的变量,为什么会出现以下代码:

var array = [].push(foo);

输出时,等于 1
从我的测试中,输出数组将只输出数组的长度 所以代码:

var array = [10,20].push(foo);

会给出 3 的值。

作为一个相关的问题(并澄清我的代码打算做什么),为什么这不直观地做它看起来做的事情,即:

var array = [];
array.push(foo);

输出数组给出 [foo] 的预期结果?

5 个答案:

答案 0 :(得分:2)

使用push方法时,它返回数组的长度。所以当你这样做时:

var array = [10,20].push(foo);

你得到[10,20,foo]这个数组的长度是3。但正如你所说的var数组,它存储了此变量中push方法返回的长度。

答案 1 :(得分:0)

因为push的返回值是数组Documentation and examples的新长度。

在您的第二个示例中,您引用了输出数组,这将在两种情况下为您提供新数组。但是,第二种情况的返回结果也是新的数组长度

var array = [];
array.push(foo); //If you do this in the console, you'll see that 1 gets returned. 

console.log(array); //While this will print out the actual contents of array, ie. foo

答案 2 :(得分:0)

Array.prototype.push()始终返回数组中新的元素数。它不返回this实例或新的Array实例。 push()是一个mutator实际上改变了数组的内容。

答案 3 :(得分:0)

相反,你可以尝试

  var array, foo = 30;
  (array = [10,20]).push(foo);
  console.log(array)

答案 4 :(得分:0)

push是一个函数,它返回一个表示数组长度的整数。

想象一下这个函数的定义为

int push(object obj);

执行此操作时:

var array = [].push(foo);

您实际上正在运行该函数并返回该值。