Javascript - 为什么从函数返回 array.push(x) 不会将元素 x 推入数组?

Javascript - Why returning array.push(x) from a function doens't push the element x into the array?

我想知道为什么以下功能有效:

function foo(list){
    var array = [];
    array.push(list);
    return array;
}

> foo([1,2,3])
[[1,2,3]]

而这个没有:

function foo(list){
    var  array = [];
    return array.push(list);
}

> foo([1,2,3])
1 

它们有什么区别?

如果您查看 push 方法的定义,它 returns 推送后数组的长度,而不是数组本身,这就是它返回 1 的原因。

The push() method adds one or more elements to the end of an array and returns the new length of the array.

您正在将一个包含 3 个元素的数组推送到新数组,因此在新数组中您有一个数组作为其内容,因此返回 1